vuex API监听mutation执行的方法subscribe执行问题

官网上对subscribe的解释是:
注册监听 store 的 mutation。handler 会在每个 mutation 完成后调用,接收 mutation 和经过 mutation 后的状态作为参数。
案例说mutation执行一次subscribe将会调用一次,在做一个下拉加载的功能中,发现问题来了,
我的mutation只执行了一次,但是subscribe却执行了多次,导致我的下拉页数出现了问题,

clipboard.png

clipboard.png

控制台中的go是我在被调用mutation函数中打印出来的,,
感觉很奇怪,为什么我的mutation中这个函数只调用一次,而subscribe却被多次调用

阅读 9.5k
3 个回答

其实vuex官网对subscribe有介绍,只是我当时没有仔细去理解他

订阅 store 的 mutation。handler 会在每个 mutation 完成后调用,接收 mutation 和经过 mutation 后的状态作为参数:

store.subscribe((mutation, state) => {
  console.log(mutation.type)
  console.log(mutation.payload)
})
要停止订阅,调用此方法返回的函数即可停止订阅。

我之前subscribe的监听放在created里面,导致该模块每次被调用是都会重新去监听mutation的变化。

更具官网所描述的:调用此方法返回的函数即可停止订阅。

所以我使用的方案是:在vue内声明一个变量,用来接住subscribe返回的函数,然后在beforeDestroy中调用其返回的函数即可。

如若大家有什么更好的方案可以一起学习一下。

很抱歉其实这个解决的方案很早以前我就清楚了,只不过一直没看segmentfault,所以也就忘记了这个

新手上路,请多包涵

有解决的办法么 我也遇到了这样的问题 导致发请求的时候 切换标签过来 这个方法会比之前多一次

我想知道结果,解决了吗?题主

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题