NuxtApp

ソース
Nuxtでは、コンポーザブル、コンポーネント、プラグイン内でランタイムのアプリコンテキストにアクセスできます。

Nuxtでは、コンポーザブル、コンポーネント、プラグイン内でランタイムのアプリコンテキストにアクセスできます。

Nuxt 2では、これはNuxtコンテキストと呼ばれていました。

Nuxt Appインターフェース

NuxtAppインターフェースのドキュメントにジャンプします。

Nuxtコンテキスト

多くのコンポーザブルとユーティリティ(組み込みのものもユーザーが作成したものも)は、Nuxtインスタンスへのアクセスを必要とする場合があります。アプリケーションのどこにでも存在するわけではありません。なぜなら、リクエストごとに新しいインスタンスが作成されるからです。

現在、NuxtコンテキストはプラグインNuxtフックNuxtミドルウェアdefineNuxtRouteMiddlewareでラップされている場合)、およびセットアップ関数(ページとコンポーネント内)でのみアクセスできます。

コンテキストへのアクセスなしでコンポーザブルが呼び出された場合、「Nuxtインスタンスへのアクセスを必要とするコンポーザブルが、プラグイン、Nuxtフック、Nuxtミドルウェア、またはVueのセットアップ関数の外で呼び出されました」というエラーが発生する可能性があります。その場合、nuxtApp.runWithContextを使用することで、このコンテキスト内で関数を明示的に呼び出すこともできます。

NuxtAppへのアクセス

コンポーザブル、プラグイン、コンポーネント内で、useNuxtApp()を使用してnuxtAppにアクセスできます。

app/composables/useMyComposable.ts
export function useMyComposable () {
  const nuxtApp = useNuxtApp()
  // access runtime nuxt app instance
}

コンポーザブルが常にnuxtAppを必要としない場合、またはuseNuxtAppが例外をスローするため、それが存在するかどうかを確認したいだけの場合は、代わりにtryUseNuxtAppを使用できます。

プラグインも便宜上、最初の引数としてnuxtAppを受け取ります。

Docs > 4 X > Guide > Directory Structure > Pluginsで詳細を読むことができます。

ヘルパーの提供

すべてのコンポーザブルとアプリケーションで利用可能なヘルパーを提供できます。これは通常、Nuxtプラグイン内で行われます。

const nuxtApp = useNuxtApp()
nuxtApp.provide('hello', name => `Hello ${name}!`)

console.log(nuxtApp.$hello('name')) // Prints "Hello name!"
プラグインでprovideキーを持つオブジェクトを返すことで、ヘルパーを注入できます。
Nuxt 2のプラグインでは、これはinject関数と呼ばれていました。