我正在尝试在客户端加入之前预取一些数据并更新Vuex。
store/index.js
export const state = () => ({});
export const getters = {};
export const actions = {
async nuxtServerInit ({ dispatch }) {
await dispatch('nasa/getImages');
}
};
store/moduleName.js
import fetch from 'node-fetch';
export const state = () => ({
images: []
});
export const mutations = {
storeImages(state, data) {
state.images = [];
state.images.push(...data);
console.log(state.images[0]); <- this logs in the terminal
}
}
export const actions = {
getImages(store) {
return fetch('api/url').then(response => {
response.json().then(function(data) {
store.commit('storeImages', data.collection.items.slice(0, 24));
});
});
}
}
我的突变由 nuxtServerInit 触发,并且在页面加载时我在终端中记录了第一个元素。但是,我在客户端的商店是空的。
我想念什么?
答案 0 :(得分:0)
在朋友的帮助下,我们设法通过删除 node-fetch 并向Vuex添加 axios 来解决此问题。
唯一的更改是在store/moduleName.js
中,现在看起来像这样:
import Axios from 'axios'
export const state = () => ({
images: []
});
export const mutations = {
storeImages(state, data) {
state.images.push(...data);
}
}
export const actions = {
async getImages(store) {
let res = await Axios.get('api/url');
store.commit('storeImages', res.data.collection.items.slice(0, 24));
}
}