做测试的时候随手在组件内写下
watch $route
却发现没有执行。但正常项目中确是可以使用的。测试了几组,发现$route
并不是在任意组件内都可以监听到
可以监听到变化的情况
- App.vue文件中可以监听到
- 不同路由使用同一页面的组件,可以在页面中监听
- 父路由不变,子路由变化,可以在父路由中监听
不可以监听到变化的情况
1.不同的页面组件监听不到
2.不同页面下的公共组件监听不到
3.父路由不变,子路由变化,子路由中监听不到
-
解析
因为watch
只是在监听变化时运行,并且运行在没有被销毁的组件中。如果是切换路由,导致组件重新渲染,被重新渲染的组件内的'watch'因为没有监测到变化,不会被运行。
网友评论