Vuex Store Getter 没有在 time.isoWeek() 上获得新值
Vuex Store Getter doesn't get the new value on time.isoWeek()
在我的模板中,我可以从我的商店获取时间,而且效果很好。它会在时间更改时更新。但是当我像这样从状态映射吸气剂时:
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");
},
};
我的 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 不是反应式的,所以尝试在 getters
中像下面这样使用
moment(state.time).....
只需将 date/time 作为字符串保存到 time 变量中,按照您的要求格式。
并根据需要初始化 state time。
在我的模板中,我可以从我的商店获取时间,而且效果很好。它会在时间更改时更新。但是当我像这样从状态映射吸气剂时:
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");
},
};
我的 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 不是反应式的,所以尝试在 getters
中像下面这样使用moment(state.time).....
只需将 date/time 作为字符串保存到 time 变量中,按照您的要求格式。 并根据需要初始化 state time。