【发布时间】:2020-12-18 08:46:18
【问题描述】:
我在这里遇到了一点问题。在我刷新页面之前,我的突变不会更新状态。
动作
async restoreDeletedCours({ commit }, cours) {
let response = await Axios.post("/dashboard/school/cours/restoreDeletedCours", cours);
let crs = response.data.data;
if (response.status == 200 || response.status == 201) {
commit("REMOVE_COURS_FROM_DELETED_LIST", crs);
commit("RESTORE_SCHOOL_DELETED_COURS", crs);
return response.data;
}
}
变异
REMOVE_COURS_FROM_DELETED_LIST(state, crs) {
// Let's remove the restored Item from deleted List
let removeFromDeletedList = state.deletedCourses.filter(c => c.id != crs.id);
state.deletedCourses = removeFromDeletedList;
}
【问题讨论】:
-
你的突变在刷新页面之前不会更新是什么意思?您的意思是 deletedCourses 的状态正在发生变化,而您只是没有看到渲染?如果是这样,您可能需要使用 this.$nextTick 来更新 DOM。使用 deletedCourses 查看组件代码可能会帮助我提供更好的答案。
-
我的意思是该操作成功地将有效负载提交到突变,但突变不会更新已删除的课程状态。刷新页面将使用来自后端的新数据设置状态。我真正需要的是,当我恢复已删除的记录时,deletedCourses 状态应该通过删除恢复的记录来更新,该记录是从后端返回的对象数组,如上所示。
-
这是要考虑的参考:vuex.vuejs.org/guide/… 一般来说,我会在操作内部进行过滤并将新过滤的数组提交到已删除课程状态。这个想法是用一个新的对象替换对象(在这种情况下是一个数组)。
标签: vue.js vuejs2 vuex vuex-modules