vuex Mutation异步请求为什么不能被记录

官网说vuex mutation进行异步请求不能被记录,不明白为什么不能异步请求成功后后做相关记录呢

阅读 3k
1 个回答

其实官网里已经解释了,文字可能比较难以理解,这里举个例子

// 假设这个就是store里的state
 var state = {
      count: 1
    }
// 这里就是某mutation函数
    function someMutation(state) {
    // 这里就是官网所说的devtool捕捉的前一状态快照,当然这个不需要你手动做
      console.log('变化前', JSON.stringify(state))
      setTimeout(() => {
        // 因为要捕捉状态,如果你的mutation的异步的,这是没办法捕获的
        // devtool可以在调用mutation函数前后打印state的快照来记录状态变更,如果你有异步,devtool是不知道的
        state.count++;
      })
      // 这里就是官网所说的devtool捕捉的后一状态快照,当然这个不需要你手动做
      console.log('变化后', JSON.stringify(state))
    }

    someMutation(state);

这就是为什么要产生Action这个东西,Action内部依然是commitmutation,这就不会破坏同步的要求,异步的东西交给action,比如请求,请求之后再去调用·mutation·同步修改state

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题