在项目中使用vue的时候发现使用watch监听不到$route的变化

在项目中遇到使用watch监听$route变化的时候失效,现在整理一下

watch: {
	$route(to, from) {
		console.log(to, from)
	}
}
// 监听失效

一.watch监听

  1. 一级路由:将匹配到的路由组件直接渲染在router-view区域中,路由组件渲染默认的方式是销毁 - 创建,因此$watch是监听不到一级路由的变化的。
watch: {
	$route: {
		handler(to, from) {
			console.log(to, from)
		},
		immediate: true
	}
}
// 路由变化时候直接监听,但是监听不到from的值,只能监听to
  1. 监听子路由:有子路由的情况下,能在当前组件监听到子组件的路由变化
watch: {
	$route(to, from) {
		console.log(to, from)
	}
}

二,使用vue自带的路由守卫beforeRouteEnter ,beforeRouteUpdate ,beforeRouteLeave

beforeRouteEnter (to, from, next) {
    next(vm => {
    	// 不能获取组件实例‘this’,因为此时组件实例还没有被创建
    	// 通过 `vm` 访问组件实例
 	 })
  },
  beforeRouteUpdate (to, from, next) {
  // 可以获取this
  },
  beforeRouteLeave (to, from, next) {
  // 可以获取this
  }

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐