cari

Rumah  >  Soal Jawab  >  teks badan

Ketahui cara menggunakan Composeable untuk memanggil kedai Pinia dalam Nuxt 3

<p>Sejak kemas kini nuxt 3.4.0, stor pinia tidak boleh digunakan dalam kompos. </p> <pre class="brush:php;toolbar:false;">//Contoh boleh digubah import { useAuthStore } daripada '~/store/auth-store'; const authStore = useAuthStore(); fungsi eksport doSomethingWithStore() { kembalikan authStore.checkAuthUser; }</pre> <p>Anda akan menerima ralat berikut</p> <pre class="brush:php;toolbar:false;">getActivePinia dipanggil tanpa Pinia aktif Adakah anda terlupa memasang pinia const pinia = createPinia() app.use(pinia) Ini akan gagal dalam pengeluaran. </pra> <p>Lihat contoh stackblitz https://stackblitz.com/edit/broken-pinia-store-in-composeables?file=composables%2FthisBreaks.js,nuxt.config.ts</p>
P粉418351692P粉418351692462 hari yang lalu720

membalas semua(2)saya akan balas

  • P粉186897465

    P粉1868974652023-08-27 08:07:09

    Anda menggantikannya dalam nuxt.config.ts 中错误地安装了 @pinia/nuxt 模块。在 Nuxt 3 中,buildModules 属性已经不存在了,您需要使用 modules (anda boleh tahu dengan ralat TypeScript):

    // nuxt.config.ts
    export default defineNuxtConfig({
      // replace buildModules by modules
      modules: ['@pinia/nuxt'],
    });
    

    Titik kedua, anda juga perlu memanggil useAuthStore di dalam fungsi combiner, jika tidak ia akan cuba memuatkan kedai sebelum pinia benar-benar dimuatkan. Ia dipanggil apabila fail diimport, bukan apabila fungsi penggabung digunakan.

    import { useAuthStore } from '~/store/auth-store';
    
    export function doSomethingWithStore() {
      const authStore = useAuthStore();
      return authStore.checkAuthUser;
    }

    Sila rujuk ini berfungsi stackblitz

    balas
    0
  • P粉378264633

    P粉3782646332023-08-27 00:19:28

    Ini kerana pengisytiharan const authStore = useAuthStore(); di luar sebarang fungsi seperti yang anda lakukan akan dipanggil pada beberapa peringkat awal dalam permulaan aplikasi, dan sebelum tika Pinia telah dimulakan dengan betul dalam tika Vue.

    Ini akan berfungsi:

    import { useAuthStore } from '~/store/auth-store';
    
    export function doSomethingWithStore() {
      const authStore = useAuthStore();
      return authStore.checkAuthUser;
    }

    Tempat yang selamat untuk membuat panggilan Pinia (mungkin bukan senarai lengkap):

    • Dalam <script setup>
    • Sebaris <template> dalam bahagian
    • Dalam defineNuxtMiddleware

    balas
    0
  • Batalbalas