nuxt generateすると非同期のデータが取得されません
簡略化したコードを下に記します。
nuxt.config.js
universalモード
javascript
1mode: 'universal',
###pages/index.vue
ページ側でasyncDataを実行。store内のfetchItemsを指定
javascript
1 async asyncData({ store }) { 2 await store.dispatch("a/fetchItems"); 3 }
###stores/a.js
fetchItemsを実行。細かいところだけど、Promise.allを使って並列処理をしている。apiを2個叩いて、帰ってきたデータをstoreしている。
javascript
1export const actions = { 2 async fetchItems({ commit }) { 3 let [data1, data2] = await Promise.all([ 4 axios.get(url, { params: arg_xxx }), 5 axios.get(url, { params: arg_yyy }) 6 ]) 7 commit('setItems', { 8 items: { 9 data1: JSON.parse(data1.data), 10 data2: JSON.parse(data2.data) 11 } 12 }) 13 } 14}
###components/b.vue
storeのデータはリアクティブに取得できるので、a.jsのstoreをマッピングする。
javascript
1export default { 2 computed: { 3 ...mapGetters("a", ["data1", "data2"]) 4 } 5};
yarn run devを使うと、上記コードはこちらの望んでいる通りに動いてくれます。
しかしyarn run generateすると、
- data1がない
- data2がない
- data1,data2の両方ない
のどれかとなり、挙動が不安定になります。これはyarn run generateするたびに上記のどれかの動きになります。
nuxt generateをする際に、async awaitが正しく動いてくれているのか不安になります。
nuxt generateで非同期のデータを取得するときは、awaitでデータ取得するまで待たないものでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。