NuxtApp
在 Nuxt 3 中,您可以在 composables、components 和 plugins 中存取執行階段應用程式上下文。
在 Nuxt 3 中,您可以在 composables、components 和 plugins 中存取執行階段應用程式上下文。
Nuxt 應用程式介面
Nuxt 上下文
許多 composables 和實用工具(無論是內建或使用者建立的)可能需要存取 Nuxt 實例。這並非在應用程式的任何地方都存在,因為每次請求都會建立一個新的實例。
目前,Nuxt 上下文僅能在 plugins、Nuxt hooks、Nuxt middleware(如果包裝在 defineNuxtRouteMiddleware
中)以及 setup functions(在 pages 和 components 中)中存取。
如果 composable 在沒有上下文存取權限的情況下被呼叫,您可能會收到錯誤訊息,指出「需要在 plugin、Nuxt hook、Nuxt middleware 或 Vue setup function 之外呼叫需要存取 Nuxt 實例的 composable。」在這種情況下,您也可以使用 nuxtApp.runWithContext
在此上下文中明確呼叫函數。
存取 NuxtApp
在 composables、plugins 和 components 中,您可以使用 useNuxtApp()
存取 nuxtApp
composables/useMyComposable.ts
export function useMyComposable () {
const nuxtApp = useNuxtApp()
// access runtime nuxt app instance
}
如果您的 composable 並非總是需要 nuxtApp
,或者您只是想檢查它是否存在,由於 useNuxtApp
會拋出例外,您可以改用 tryUseNuxtApp
。
為了方便起見,Plugins 也會收到 nuxtApp
作為第一個引數。
提供輔助工具
您可以提供輔助工具,以便在所有 composables 和應用程式中使用。這通常在 Nuxt plugin 中發生。
const nuxtApp = useNuxtApp()
nuxtApp.provide('hello', (name) => `Hello ${name}!`)
console.log(nuxtApp.$hello('name')) // Prints "Hello name!"