2.9 KiB
title | description | links | |||||||
---|---|---|---|---|---|---|---|---|---|
NuxtApp | In Nuxt 3, you can access runtime app context within composables, components and plugins. |
|
In Nuxt 3, you can access runtime app context within composables, components and plugins.
::read-more{to="https://v2.nuxt.com/docs/internals-glossary/context#the-context" target="_blank"} In Nuxt 2, this was referred to as Nuxt context. ::
Nuxt App Interface
::read-more{to="/docs/guide/going-further/internals#the-nuxtapp-interface"}
Jump over the NuxtApp
interface documentation.
::
The Nuxt Context
Many composables and utilities, both built-in and user-made, may require access to the Nuxt instance. This doesn't exist everywhere on your application, because a fresh instance is created on every request.
Currently, the Nuxt context is only accessible in plugins, Nuxt hooks, Nuxt middleware, and setup functions (in pages and components).
If a composable is called without access to the context, you may get an error stating that 'A composable that requires access to the Nuxt instance was called outside of a plugin, Nuxt hook, Nuxt middleware, or Vue setup function.' In that case, you can also explicitly call functions within this context by using nuxtApp.runWithContext
.
Accessing NuxtApp
Within composables, plugins and components you can access nuxtApp
with useNuxtApp()
:
export function useMyComposable () {
const nuxtApp = useNuxtApp()
// access runtime nuxt app instance
}
If your composable does not always need nuxtApp
or you simply want to check if it is present or not, since useNuxtApp
throws an exception, you can use tryUseNuxtApp
instead.
Plugins also receive nuxtApp
as the first argument for convenience.
:read-more{to="/docs/guide/directory-structure/plugins"}
Providing Helpers
You can provide helpers to be usable across all composables and application. This usually happens within a Nuxt plugin.
const nuxtApp = useNuxtApp()
nuxtApp.provide('hello', (name) => `Hello ${name}!`)
console.log(nuxtApp.$hello('name')) // Prints "Hello name!"
::read-more{to="/docs/guide/directory-structure/plugins#providing-helpers"}
It is possible to inject helpers by returning an object with a provide
key in plugins.
::
::read-more{to="https://v2.nuxt.com/docs/directory-structure/plugins#inject-in-root--context" target="_blank"} In Nuxt 2 plugins, this was referred to as inject function. ::