NuxtApp
В Nuxt 3 вы можете получить доступ к контексту приложения в композаблах, компонентах и плагинах.
Интерфейс приложения Nuxt
Контекст Nuxt
Многие композаблы и утилиты - как встроенные, так и пользовательские - могут получить доступ к инстансу Nuxt. Его можно получить не везде в приложении, потому что при каждом запросе создается новый экземпляр.
Пока что контекст Nuxt доступен только в плагинах, Nuxt-хуках, Nuxt middleware, и setup-функциях (в страницах и компонентах).
Если композабл вызывается вне контекста, вы можете получить ошибку "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()
:
export function useMyComposable () {
const nuxtApp = useNuxtApp()
// доступ к экземпляру приложения nuxt
}
Если ваш композабл не всегда нуждается в доступе к контексту nuxtApp
или вы просто хотите проверить его наличие или отсутствие, поскольку useNuxtApp
выбрасывает исключение, то вы можете использовать tryUseNuxtApp
вместо этого.
Плагины также получают nuxtApp
в качестве первого аргумента для удобства.
Предоставление хелпер-функций
Вы можете предоставить функции, чтобы они были доступны во всех композаблах и приложении. Обычно это используется внутри плагинов Nuxt.
const nuxtApp = useNuxtApp()
nuxtApp.provide('hello', (name) => `Hello ${name}!`)
console.log(nuxtApp.$hello('name')) // Выведет "Hello name!"