NuxtApp
Nuxtでは、コンポーザブル、コンポーネント、プラグイン内でランタイムのアプリコンテキストにアクセスできます。
Nuxt Appインターフェース
Nuxtコンテキスト
多くのコンポーザブルとユーティリティ(組み込みのものもユーザーが作成したものも)は、Nuxtインスタンスへのアクセスを必要とする場合があります。アプリケーションのどこにでも存在するわけではありません。なぜなら、リクエストごとに新しいインスタンスが作成されるからです。
現在、Nuxtコンテキストはプラグイン、Nuxtフック、Nuxtミドルウェア(defineNuxtRouteMiddlewareでラップされている場合)、およびセットアップ関数(ページとコンポーネント内)でのみアクセスできます。
コンテキストへのアクセスなしでコンポーザブルが呼び出された場合、「Nuxtインスタンスへのアクセスを必要とするコンポーザブルが、プラグイン、Nuxtフック、Nuxtミドルウェア、またはVueのセットアップ関数の外で呼び出されました」というエラーが発生する可能性があります。その場合、nuxtApp.runWithContextを使用することで、このコンテキスト内で関数を明示的に呼び出すこともできます。
NuxtAppへのアクセス
コンポーザブル、プラグイン、コンポーネント内で、useNuxtApp()を使用してnuxtAppにアクセスできます。
export function useMyComposable () {
const nuxtApp = useNuxtApp()
// access runtime nuxt app instance
}
コンポーザブルが常にnuxtAppを必要としない場合、またはuseNuxtAppが例外をスローするため、それが存在するかどうかを確認したいだけの場合は、代わりにtryUseNuxtAppを使用できます。
プラグインも便宜上、最初の引数としてnuxtAppを受け取ります。
ヘルパーの提供
すべてのコンポーザブルとアプリケーションで利用可能なヘルパーを提供できます。これは通常、Nuxtプラグイン内で行われます。
const nuxtApp = useNuxtApp()
nuxtApp.provide('hello', name => `Hello ${name}!`)
console.log(nuxtApp.$hello('name')) // Prints "Hello name!"