标签:调用 console watch next 实例 组件 监听 路由
watch监听路由重复加载
项目要求,列表页跳转到一个内容页,每个打开的内容页之间切换还要做到点击就刷新数据, 之前的解决方式就是用watch去监听路由,但是监听路由后,第一次进入无效,关闭后打开就会成倍的去请求watch里面的方法。应该是框架的原因,一直有缓存的router的信息在,所以还会去请求相同的东西!归根结底就是vue的生命周期不够了解
解决办法使用“导航守卫”
//next()是必须加的
beforeRouteEnter (to, from, next) {
console.log('beforeRouteEnter被调用:在渲染该组件的对应路由被 confirm 前调用')
// 在渲染该组件的对应路由被 confirm 前调用
// 不!能!获取组件实例 `this` 因为当守卫执行前,组件实例还没被创建
// 可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。
next(vm => {
// 通过 `vm` 访问组件实例
console.log(vm)
})
},
// beforeRouteEnter 是支持给 next 传递回调的唯一守卫。
// 对于 beforeRouteUpdate 和 beforeRouteLeave 来说,this 已经可用了,所以不支持传递回调,因为没有必要了。`
beforeRouteUpdate (to, from, next) {
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
console.log('beforeRouteUpdate被调用:在当前路由改变,但是该组件被复用时调用')`
next()
},
beforeRouteLeave (to, from, next) {`**
// 导航离开该组件的对应路由时调用`
// 可以访问组件实例 `this``
const answer = window.confirm('是否确认离开当前页面')`
if (answer) {
console.log('beforeRouteLeave被调用:导航离开该组件的对应路由时调用')`
next()
} else {
next(false)
}
},
标签:调用,console,watch,next,实例,组件,监听,路由 来源: https://blog.csdn.net/u013995513/article/details/121587557
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。