Vuex Store Getter 不会在 time.isoWeek() 上获取新值



在我的模板中,我可以从我的商店获得时间,这很好。它会随着时间的变化而更新。但是当我像这样从状态映射getter时:

computed: {
...mapGetters({
week: "week",
year: "year",
time: "time",
}),
}

week和year的值不会改变。为什么呢?我错过了什么?

但是在模板中这样做是有效的:$store.getter ['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");
},
};

我的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

中使用如下方式

时刻(state.time)…

将日期/时间作为字符串保留到time根据您需要的格式进行更改。初始化状态间>随你便。

最新更新