Vue中相同页面跳转的问题及解决方案
问题
也是最近做需求遇到的一个问题。首页的一个总台系统。如图页面顶部的导航条,其中*解决方案*这一项下面的四项一期都暂时不做,等下一个排期再做。
为了考虑用户体验,这四个点进去,都会进入同一个页面——敬请期待页面。
当然了,Vue中为了提高性能,相同的组件会被复用,也就是说,组件的生命周期钩子不会再次被调用。详细可参考-响应路由参数的变化
提醒一下,当使用路由参数时,例如从
/user/foo
导航到/user/bar
,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
解决方案
当然,文档中也给出了对应的解决方案。
方案1:
必须要设置该页面对应的router为动态路由。 path: '/user/:id'
,否则也不会生效。
const User = {
template: '...',
watch: {
'$route' (to, from) {
// 对路由变化作出响应...
}
}
}
方案2:
不知道是不是我用法不对:这个导航守卫只会触发一次。
const User = {
template: '...',
beforeRouteUpdate (to, from, next) {
// react to route changes...
// don't forget to call next()
}
}
方案3:
这个自己想了一个方法。
方法的弊端就是,如果多出页面涉及到该问题,需要依次去添加。
navigateTo (path) {
if (!path) return;
if (path === "/stay-tuned") {
this.$router.push({ path });
location.reload();
} else {
this.$router.push({ path });
}
}