NuxtApp

Исходники
В Nuxt вы можете получить доступ к контексту приложения в композаблах, компонентах и плагинах.

В Nuxt вы можете получить доступ к контексту приложения в композаблах, компонентах и плагинах.

В Nuxt 2 это называлось контекст Nuxt.

Интерфейс приложения Nuxt

Перейдите к документации интерфейса NuxtApp.

Контекст Nuxt

Многие композаблы и утилиты - как встроенные, так и пользовательские - могут получить доступ к инстансу Nuxt. Его можно получить не везде в приложении, потому что при каждом запросе создается новый экземпляр.

Currently, the Nuxt context is only accessible in plugins, Nuxt hooks, Nuxt middleware (if wrapped in defineNuxtRouteMiddleware), and setup functions (in pages and components).

Если композабл вызывается вне контекста, вы можете получить ошибку "A composable that requires access to the Nuxt instance was called outside of a plugin, Nuxt hook, Nuxt middleware, or Vue setup function.". В этом случае вы можете явно вызвать функцию в контексте, используя nuxtApp.runWithContext.

Доступ к NuxtApp

Внутри композаблов, плагинов и компонентов вы можете получить доступ к nuxtApp с помощью useNuxtApp():

composables/useMyComposable.ts
export function useMyComposable () {
  const nuxtApp = useNuxtApp()
  // доступ к экземпляру приложения nuxt 
}

Если ваш композабл не всегда нуждается в доступе к контексту nuxtApp или вы просто хотите проверить его наличие или отсутствие, поскольку useNuxtApp выбрасывает исключение, то вы можете использовать tryUseNuxtApp вместо этого.

Плагины также получают nuxtApp в качестве первого аргумента для удобства.

Узнать больше Docs > Guide > Directory Structure > Plugins.

Предоставление хелпер-функций

Вы можете предоставить функции, чтобы они были доступны во всех композаблах и приложении. Обычно это используется внутри плагинов Nuxt.

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

console.log(nuxtApp.$hello('name')) // Выведет "Hello name!"
В плагинах можно внедрять хелперы, возвращая объект с ключом provide.
В плагинах Nuxt 2 это называлось inject-функция.