vuex在getters里访问store需要怎么做?

我需要用vuex储存一个对象, 外部通过getters获取.
该对象会在每日24点过期, 然后重新定义这个对象.
但是我无法在getters里面获取stroe, 也就无法使用store.commit.
我这种写法有什么问题, 需要怎么修改?
谢谢!

export default new Vuex.Store {
    strict: process.env.NODE_ENV !== 'production',
    state: {
        timeInfo: {}
    },
    getters: {
        timeList: state => {
            let date = new Date(new Date().toLocaleDateString()).getTime();
            if (date === state.timeListInfo.date) {
                return timeListInfo.list
            } else {
                // 我想在这里重写timeInfo, 但是下面的写法不成功
                // this.commit('timeInfo' ,{
                // date: date,
                // list: []
                // });
                return [];
            }
        }
    },
    mutations: {
        timeInfo(state, info) {
            state.timeListInfo = info;
        }
    }
}
阅读 3.6k
2 个回答

vuex实则一套发布/订阅罢了,作者的思路是实现一套单向流的状态管理。

clipboard.png

源码里并没有提供getters可以访问commit的参数,你可以在actions里做timeList里的事情,然后通过action里的提供的commit参数去修改时间即可

getters中不能更新数据的。
你想设置state值可以通过外部调用mutations或者actions中的方法进行更新。
例如:

if (this.$store.getters.timeList.length === 0) {
    this.$strore.commit('timeInfo', {...})
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进