cari

Rumah  >  Soal Jawab  >  teks badan

Vue 2.7 dan API Gabungan + Vuex

Kami cuba memindahkan aplikasi Vue 2 ke Vue 2.7 tetapi menghadapi beberapa isu yang menggabungkan API dan Vuex.

Dalam aplikasi semasa kami, kami menggunakan pakej @vue/composition-api untuk membolehkan kami menggunakan item boleh gubah. Dalam kompos ini kita perlu mengakses kedai dan mendapatkannya seperti ini:

...rest of the component
setup(props, { parent }) {
  const store = parent.$store
  someComposable({ store })
}

Namun, apabila kami menaik taraf versi Vue kepada 2.7, sintaks ini tidak lagi disokong. Kita perlu menggunakan useStore kompos dalam Vuex untuk mengakses kedai. Ini hanya berfungsi dengan Vuex versi 4.

Apabila menaik taraf kepada Vuex versi 4 pada versi semasa Vue, kami melihat ralat berikut:

WARNING in ./node_modules/vuex/dist/vuex.esm-bundler.js 14:9-15
 export 'inject' (imported as 'inject') was not found in 'vue' (possible exports: default)
  @ ./src/plugins/vuex.js 4:0-24 5:8-12
  @ ./src/app.js 11:0-24

 WARNING in ./node_modules/vuex/dist/vuex.esm-bundler.js 132:14-25
 export 'effectScope' (imported as 'effectScope') was not found in 'vue' (possible exports: default)
  @ ./src/plugins/vuex.js 4:0-24 5:8-12
  @ ./src/app.js 11:0-24

 WARNING in ./node_modules/vuex/dist/vuex.esm-bundler.js 140:27-35
 export 'computed' (imported as 'computed') was not found in 'vue' (possible exports: default)
  @ ./src/plugins/vuex.js 4:0-24 5:8-12
  @ ./src/app.js 11:0-24

 WARNING in ./node_modules/vuex/dist/vuex.esm-bundler.js 148:17-25
 export 'reactive' (imported as 'reactive') was not found in 'vue' (possible exports: default)
  @ ./src/plugins/vuex.js 4:0-24 5:8-12
  @ ./src/app.js 11:0-24

 WARNING in ./node_modules/vuex/dist/vuex.esm-bundler.js 362:2-7
 export 'watch' (imported as 'watch') was not found in 'vue' (possible exports: default)
  @ ./src/plugins/vuex.js 4:0-24 5:8-12
  @ ./src/app.js 11:0-24

 WARNING in ./node_modules/vuex/dist/vuex.esm-bundler.js 1101:9-14
 export 'watch' (imported as 'watch') was not found in 'vue' (possible exports: default)
  @ ./src/plugins/vuex.js 4:0-24 5:8-12
  @ ./src/app.js 11:0-24

Ini masuk akal kerana ia adalah sebahagian daripada API komposisi dan tidak tersedia pada versi Vue yang kami gunakan (2.6.14). Tetapi Vuex versi 4 dan Vue versi 2.7 nampaknya juga tidak berfungsi bersama.

Apabila kami menjalankan aplikasi menggunakan Vuex ^4.1.0 和 Vue 2.7.13 kami melihat ralat berikut:

[Vue warn]: Error in render: "TypeError: this.$store is undefined"

Bagaimana kita membuat Vue 2.7 berfungsi dengan Vuex dan API komposisi? Secara khusus, bagaimanakah kita boleh mengakses storan Vuex dalam kompos pada Vue 2.7?

P粉295728625P粉295728625429 hari yang lalu906

membalas semua(1)saya akan balas

  • P粉162773626

    P粉1627736262023-11-04 00:54:16

    Di kedai anda:

    const store = new Vuex.Store({ ...options })
    export default store;
    export const useStore = () => store
    

    Dalam mana-mana komponen, termasuk subkomponen:

    setup() {
      const store = useStore();
      // ...
    }
    

    Jika anda mempunyai berbilang kedai, namakan kedai dan usecirinya dengan sewajarnya.

    balas
    0
  • Batalbalas