所以我的商店里有这个突变:
DELETE_POST: (state, index) => {
state.Posts.splice(index, 1);
}
我也有这个动作:
delete({ commit, state }, index) {
commit('DELETE_POST', index);
}
此操作基本上从帖子数组中删除帖子,该帖子通过 vue-apollo 返回。
在我的 Vue 组件中调度操作
this.$store.dispatch('Posts/delete', index);
导致TypeError: 0 是只读错误
这是商店的状态:
export const state = () => ({
Posts: []
})
以及负责设置帖子的突变:
export const mutations = {
SET_POSTS: (state, posts) => {
state.Posts = posts;
},
下面是我们如何使用 apollo 客户端通过 graphql 查询填充存储
export const actions = {
async get({ commit, state }, params) {
let client = this.app.apolloProvider.defaultClient;
let { data: response } = await client.query({
query: GetPostsQuery
variables: {
id: parseInt(params.id) || null,
description: params.description || '',
categoryId: params.categoryId || null,
},
fetchPolicy: 'network-only'
});
let postsDetails = response.Posts.get;
if (postsDetails.status_code !== 200) return false;
commit('SET_POSTS', postsDetails.data);
return postsDetails.data;
},
这是一个 vue-apollo 问题吗?如果是这样,我怎么可能修改状态?