老师对commit的使用有些困惑

来源:7-7 状态管理 - 数据持久化

weixin_慕丝2377090

2022-02-19

一般流程:dispatch 触发 actions 调用 commit 触发 mutations 修改 state。
老师这里:
直接在 mutation的方法中再次commit触发mutation内部的方法,可不可以在这里使用action属性呢?

mutations: {
    /**
     * 保存数据到 storage
     */
    saveToStorage(state) {
      uni.setStorage({
        key: STORAGE_KEY,
        data: state.searchData
      });
    },
    /**
     * 添加数据
     */
    addSearchData(state, val) {
      ...
      // 调用 saveToStorage
      this.commit('search/saveToStorage');
    },
    /**
     * 删除指定数据
     */
    removeSearchData(state, index) {
      ...
      // 调用 saveToStorage
      this.commit('search/saveToStorage');
    },
    /**
     * 删除所有数据
     */
    removeAllSearchData(state) {
      ...
      // 调用 saveToStorage
      this.commit('search/saveToStorage');
    }
写回答

1回答

Sunday

2022-02-19

你好

vuex 中是不可以在 mutation 中触发 action 的。因为 mutation 不推荐(可以使用,但是不推荐使用)异步操作

0
1
weixin_慕丝2377090
谢谢老师解答,我之前是困惑,为什么在mutation里面的函数提供commit去触发mutation里面另一个函数,因为一般来说mutation里面函数都是原子的,所以第一次看在mutation里面的函数继续使用commit。
2022-02-20
共1条回复

uni-app从入门到进阶 系统完成项目实战

专门为小程序0基础学员而设,让你拥有能上线的作品

1105 学习 · 743 问题

查看课程