在我的模板中,我可以从我的商店获取时间,效果很好。每当时间改变时它就会更新。但是当我像这样映射来自状态的 setter/getter 时:
computed: {
...mapGetters({
week: "week",
year: "year",
time: "time",
}),
}
周和年的值永远不会改变。这是为什么?我错过了什么?
但是在模板中这样做是有效的:$store.getters['week']
我的状态如下所示:
const state = {
time: moment(),
};
行动:
const actions = {
changeTimeToNextWeek(context) {
context.commit("changeTimeToNextWeek");
},
changeTimeToPreviousWeek(context) {
context.commit("changeTimeToPreviousWeek");
},
};
突变:
const mutations = {
changeTimeToNextWeek(state) {
state.time = state.time.add(1, "week");
},
changeTimeToPreviousWeek(state) {
state.time = state.time.subtract(1, "week");
},
};
我的 setter/getter 看起来像这样:
const getters = {
week: (state, getters) => {
return getters.time.isoWeek();
},
year: (state, getters) => {
return state.time.isoWeekYear();
},
time: (state, getters) => {
return state.time;
},
};
最佳答案
moment() js 不是响应式的,因此请尝试在 getter 中使用如下所示
moment(state.time).....
只需按照您需要的格式将日期/时间作为字符串保存到时间变量中即可。 并根据需要初始化状态时间。
关于javascript - Vuex Store Getter 未在 time.isoWeek() 上获取新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66221682/