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

你好小目标
  • 2
新手上路,请多包涵

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

回复
阅读 157
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 思否「问答」打卡,欢迎正在阅读的你也加入。
你知道吗?

宣传栏