我想从vuex中的模块将元素推送到根目录中的状态。 但我得到一个错误:rootState.artists.push不是功能。
//in root state store.js
state:{
artists:[]
},
modules:{
artists,
}
//in module artists.js
return firestore().collection('artists').limit(15).get()
.then((snapshot) => {
let artists = [];
snapshot.forEach(doc => {
artists.push({...doc.data(), id: doc.id })
});
rootState.artists.push(...artists);
}).catch((err) => {
console.log(err);
});
我希望应该填充处于根状态的艺术家数组,但是我得到rootState.artists.push不是函数。
答案 0 :(得分:0)
您应该保持变异同步,也不要在行动中改变状态。考虑重构代码。
另一个问题是您的模块状态确实取代了rootState artists
。
示例:
// in store.js
state:{
artists:[]
},
mutations: {
updateArtists(state, artists) {
state.artists.push(...artists);
},
},
modules:{
artistsModule,
}
// in artistsModule.js
actions: {
updateArtists(context) {
firestore().collection('artists').limit(15).get()
.then((snapshot) => {
let artists = [];
snapshot.forEach(doc => {
artists.push({...doc.data(), id: doc.id })
});
context.commit('updateArtists', artists, { root: true });
}).catch((err) => {
console.log(err);
});
}
}