rt;
现在有两个页面A和B,其中A页面中有一个watch
监听,b页面为空页面,当我切换路由,首先由A页面切换到B页面,再切换回A页面,这时watch
内的函数会被触发两次,继续上一步的切换,触发次数会继续叠加,关键点就是我必须要切换回A页面。
假如我新建一个C页面,B页面和C页面之间的切换不会导致watch
内的函数触发叠加,只有切换回A页面才会叠加一次,叠加次数无上限。
希望大佬给分析一下原因。
PS:vue版本:2.5.2
初步怀疑跟vue-router有关
rt;
现在有两个页面A和B,其中A页面中有一个watch
监听,b页面为空页面,当我切换路由,首先由A页面切换到B页面,再切换回A页面,这时watch
内的函数会被触发两次,继续上一步的切换,触发次数会继续叠加,关键点就是我必须要切换回A页面。
假如我新建一个C页面,B页面和C页面之间的切换不会导致watch
内的函数触发叠加,只有切换回A页面才会叠加一次,叠加次数无上限。
希望大佬给分析一下原因。
PS:vue版本:2.5.2
初步怀疑跟vue-router有关
watch是属于vue的api和vue-router无关,具体用法可以查看官网https://cn.vuejs.org/v2/api/#...
监听路由变化时,路由有两个动作to,from。所以你才会触发两次。watch是写在a页面的,其他页面切换当然不会触发了。。
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
首先你的路由应该是用
<kepp-alive>
包裹的,这样路由组件在切换的时候不会销毁。理解这点问题解决就简单了。确认
A
页面中的watch
选项中监听的内容是什么,再查看B
页面是否改变了该内容即可。如果想保留
<keep-alive>
又不想A
组件内watch
在别的页面被执行,可以在函数中对路由属性$route
做个判断: