nuxt logo

ドキュメント翻訳(非公式)

コンテキスト

Nuxt Kit は、コンテキストを扱うためのユーティリティを提供します。

Nuxt モジュールは、Nuxt の機能を強化することができます。これにより、コードを整理し、モジュール化するための構造化された方法が提供されます。モジュールをより小さなコンポーネントに分割したい場合、Nuxt は useNuxttryUseNuxt 関数を提供します。これらの関数を使用すると、引数として渡すことなく、コンテキストから Nuxt インスタンスに便利にアクセスできます。

Nuxt モジュールで setup 関数を使用する場合、Nuxt はすでに第二引数として提供されています。つまり、useNuxt() を呼び出すことなく直接アクセスできます。

useNuxt

コンテキストから Nuxt インスタンスを取得します。Nuxt が利用できない場合はエラーをスローします。

使用法

import { useNuxt } from '@nuxt/kit'

const setupSomeFeature = () => {
  const nuxt = useNuxt()

  // ここで nuxt インスタンスを使用できます
  console.log(nuxt.options)
}

// @errors: 2391
import type { Nuxt } from '@nuxt/schema'
// ---cut---
function useNuxt(): Nuxt

戻り値

useNuxt 関数は Nuxt インスタンスを返します。このインスタンスには、Nuxt で利用可能なすべてのオプションとメソッドが含まれています。

プロパティ説明
optionsNuxtOptions解決された Nuxt の設定。
hooksHookable<NuxtHooks>Nuxt のフックシステム。ライフサイクルイベントの登録とリスニングを可能にします。
hook(name: string, (...args: any[]) => Promise<void> | void) => () => void特定のライフサイクルフックに対して単一のコールバックを登録するためのショートカット。
callHook(name: string, ...args: any[]) => Promise<any>ライフサイクルフックを手動でトリガーし、登録されたすべてのコールバックを実行するためのショートカット。
addHooks(configHooks: NestedHooks) => () => void複数のフックを一度に登録するためのショートカット。

import { useNuxt } from '@nuxt/kit'

export const setupTranspilation = () => {
  const nuxt = useNuxt()

  if (nuxt.options.builder === '@nuxt/webpack-builder') {
    nuxt.options.build.transpile ||= []
    nuxt.options.build.transpile.push('xstate')
  }
}

tryUseNuxt

コンテキストから Nuxt インスタンスを取得します。Nuxt が利用できない場合は null を返します。

使用法

import { tryUseNuxt } from '@nuxt/kit'

function setupSomething () {
  const nuxt = tryUseNuxt()

  if (nuxt) {
    // ここで nuxt インスタンスを使用できます
    console.log(nuxt.options)
  } else {
    console.log('Nuxt は利用できません')
  }
}

// @errors: 2391
import type { Nuxt } from '@nuxt/schema'
// ---cut---
function tryUseNuxt(): Nuxt | null

戻り値

tryUseNuxt 関数は、利用可能な場合は Nuxt インスタンスを返し、Nuxt が利用できない場合は null を返します。

Nuxt インスタンスは useNuxt セクションで説明されている通りです。

declare module '@nuxt/schema' {
  interface NuxtOptions {
    siteConfig: SiteConfig
  }
}
// ---cut---
import { tryUseNuxt } from '@nuxt/kit'

interface SiteConfig {
  title?: string
}

export const requireSiteConfig = (): SiteConfig => {
  const nuxt = tryUseNuxt()
  if (!nuxt) {
    return {}
  }
  return nuxt.options.siteConfig
}