vue router 文档阅读理解

vue router 文档阅读理解
每个守卫方法接收三个参数:
to: route 即将要进入的目标路由对象
from route 当前导航正要离开的路由
next function 确保要调用 next 方法,否则钩子就不会被 resolved

conts router = new VueRouter()

// 使用router.beforeEach() 注册一个全局前置守卫
router.beforeEach((to,from,next)=>{
	next();// next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)
	next(false); // 中断当前导航
	next("/) // 跳转到一个不同的地址
})

// 全局后置钩子,钩子不会接受next函数,也不会改变导航本身
router.afterEach((to,from)=>{
})

路由独享的守卫(可以在路由配置上直接定义 beforeEnter 守卫)

	const router = new VueRouter({
	  routes: [
		{
		  path: '/foo',
		  component: Foo,
		  beforeEnter: (to, from, next) => {
			// ...
			// 设置返回顶部之类的功能
		  }
		}
	  ]
	})

组件内定义路由导航守卫,类似生命周期

beforeRouteEnter(to, from, next){
	// 渲染改组件对应路由被confirm前调用
	// 不能获取组件this 因为当前守卫执行前组件还没有创建
	// 不过可以传一个回调给next来访问实例
	next(vm => {
		vm.method()
		// 通过 `vm` 访问组件实例
	  })
}
beforeRouteUpdate(to, from, next){
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
	// 可以访问到this(所有next不支持传实例)
}
beforeRouteLeave(to, from, next){
	// 导航离开组件时调用
	// 可以访问到this(所有next不支持传实例
	// 使用场景 内容没有保存 该导航可以使用next(false)来取消
	
	const answer = window.confirm('Do you really want to leave? you have unsaved changes!')
	if (answer) {
		next()
	} else {
		next(false)
	}
  
}

滚动行为
切换到新路由时,想要页面滚到顶部或者是保持原先滚动位置,就像是重新加载页面那样,vue-router 可以让自定义路由切换时如何滚动
注意: 这个功能只在支持history.pushState的浏览器中使用

编程式导航
等同于 router.push()
router.push() 是编程式 该方法的参数可以是一个字符串路径,或者一个描述地址的对象(该跳转会向history添加新记录)

router.push({
	path:"home",
})

// 命名路由
router.push({
	name:"hone"
})
// 传参方有params 和query  注意提供了path,params会被忽略 所以要么写完成的url 或者使用name

 router.push({
 name:"home",
 params:{userid}
 })  // home/12
 
 router.push({ path: `/user/${userId}` }) // -> /user/123
 query // /user?userName=da&da=ac

router.replace 和router.push() 的区别就是不会向history添加新记录
声明式:

$route.hash // 获取当前路由带#
$route.fullPath
$route.matched // 数组
$route.name

复用组件可以watch监听$route 或者使用router的方法 beforeRouteUpdate(to, from, next){}

router api参考
通过作用域插槽暴露底层的定制能力(v-slot)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值