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