Nuxt3パブリックベータ版時点の情報となります。
Nuxt2で自作クラスを登録する方法
Nuxt2では自作クラスをNuxtインスタンスに登録する場合、inject()
関数を使用していました。
Nuxt2で自作クラスを追加する方法
// plugins/my-plugin.js
class MyPlugin {
constructor (context) {
this.error = context.error
}
// 404エラーを返す共通関数
errorHandler () {
return this.error({ statusCode: 404, message: 'ページが見つかりません' })
}
}
export default (context, inject) => {
inject('my', new MyPlugin(context)
}
Nuxt2で自作クラスを呼び出す方法
// pages/index.vue
this.$my.errorHandler()
Nuxt3に自作クラスを登録する方法
Nuxt3ではprovide
を使用し、自作クラスを登録します。
関数内ではuseNuxtApp()
やuseRoute()
など取得できます。
これにより、Nuxt3の機能をカスタマイズしたオリジナル関数を作成できます。
plugins/my-plugin.ts
export interface MyPluginInterface {
hoge (): string
}
class MyPlugin implements MyPluginInterface {
hoge () {
// この中では、Nuxtインスタンスやルートオブジェクトも取得可能
console.log(useNuxtApp())
console.log(useRoute().query)
return 'hoge'
}
}
export default defineNuxtPlugin(nuxtApp => {
return {
provide: {
my: new MyPlugin
}
}
})
Nuxt3でprovideを呼び出す
自作クラスの呼び出しにはuseNuxtApp()
を使用します。
provide
に登録したプロパティに$
をつけて呼び出すルールとなっています。
また、登録したクラスや関数はどこからでも呼び出し可能です。
pages/index.vue
<script setup lang="ts">
const { $my } = useNuxtApp()
console.log($my.hoge())
</script>
console
hoge
← Prev
Next →
あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる。そんな方に向けた単発・短期間メンターサービスを行っています。
独学プログラマのサービス
Nuxt3の投稿
1
Nuxt3 Betaをブラウザに立ち上げる【Nuxt3 × VSCodeセットアップ】
2
Nuxt3のsetup内ではthisの代わりにuseNuxtApp()を使用する
3
Nuxt3でレイアウトファイルを使用するには<NuxtLayout>を使う
4
Nuxt3で動的ルーティングを生成するには[id].vueを作成する
5
Nuxt3のmiddlewareの登録と呼び出し&Beta版のバグとその回避策
6
Nuxt3betaのServerMiddlewareで特定ルートのみ発火させる方法は動かない
7
importする自作プラグインはserver/apiには置けない
8
Nuxt3でinjectみたいに自作クラスを登録するにはprovideを使う
9
Nuxt3のuseFetch()で2回目以降のapiがスルーされる問題
1
Nuxt3を使ってShopifyの商品一覧を取得しよう
2
Nuxt3をNetlifyCLIとnetlify.tomlを使ってNetlifyにデプロイしよう
3
Nuxt3のserver/apiとuseFetchを使用してShopifyへサーバーAPIリクエストを実装
4
Nuxt3でShopifyのCheckoutIDが付与されたURLにリダレクト処理を行う
5
【Nuxt3×Shopify】Piniaを導入した商品取得のベストプラクティス