Composeable を使用して Nuxt 3 の Pinia ストアを呼び出す方法を学習します。
P粉418351692
P粉418351692 2023-08-26 09:34:11
0
2
762
<p>nuxt 3.4.0 アップデート以降、コンポーザブルで pinia ストアを使用できなくなりました。 </p> <pre class="brush:php;toolbar:false;">//コンポーズ可能なサンプル import { useAuthStore } から '~/store/auth-store'; const authStore = useAuthStore(); エクスポート関数 doSomethingWithStore() { authStore.checkAuthUser を返します。 }</pre> <p>次のエラーが表示されます</p> <pre class="brush:php;toolbar:false;">getActivePinia がアクティブな Pinia なしで呼び出されました。pinia のインストールを忘れましたか? const pinia = createPinia() app.use(pinia) これは運用環境では失敗します。 </pre> <p>スタックブリッツの例を表示する https://stackblitz.com/edit/broken-pinia-store-in-composeables?file=composables/thisBreaks.js,nuxt.config.ts</p>
P粉418351692
P粉418351692

全員に返信(2)
P粉186897465

@pinia/nuxt モジュールを nuxt.config.ts に誤ってインストールしました。 Nuxt 3 では、buildModules 属性はもう存在しないため、代わりに modules を使用する必要があります (TypeScript エラーでわかります):

リーリー

2 番目のポイントは、結合関数内で useAuthStore を呼び出す必要もあります。そうしないと、pinia が実際にロードされる前にストアをロードしようとします。これは、結合関数が使用されるときではなく、ファイルがインポートされるときに呼び出されます。

リーリー

この動作中の stackblitz

を参照してください。
いいねを押す +0
P粉378264633

これは、先ほどのように関数の外で const authStore = useAuthStore(); を宣言すると、アプリケーションの起動の初期段階で、Ponia インスタンスを初期化する前に Vue インスタンス内で正しく呼び出されるからです。

これはうまくいきます:

リーリー

Pinia に電話をかけるのが安全な場所 ​​(完全なリストではない可能性があります):

  • 内部<スクリプト設定>内部
  • <テンプレート>セクションのインライン
  • defineNuxtMiddleware内部
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート