vuex数据修改过快 watch只有最后一条,怎样监听全部的变化?

在vue2中,vuex修改数据(连续几条数据几乎同时)。在页面watch监听时,只触发最后的值。有没有遇到过这样的情况,这怎么解决

      for (let i = 0; i < 10; i++) {
        this.$store.commit("testIn", i);
      }

下面的打印出1-10

const mutations = {
  testIn(state, val) {
    state.testIn = val;
    console.log(val);
  },
}

监听时只打印10

  watch: {
     "$store.state.app.testIn"(val){
        console.log(val);
      }
}
阅读 2.2k
2 个回答

watch 导致的,Vue 为了提升性能会合并成一个更新。
如果想要每次都受控,可以在每次 commit 修改的时候去做处理,而不是使用 watch 在页面中操作。

如果非要这样做,可以简单的使用 setTimeout 来包裹赋值操作,这样每一次的修改都可以触发 watch 了。
但是还是推荐你在 commit 时处理。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

你可以把所有要修改的数据改完,然后再把新数据传给 mutation ,本质原因是你在 mutation 改值的地方设计就出现了问题。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏