场景:vue路由加载页面时,数据加载慢的时候页面会有闪动的效果,数据加载前和加载后的区别。(特别是el-table表格数据)
思路:路由前加载数据,等数据加载完再路由渲染页面
解决方案:使用vue-router的路由守卫beforeRouteEnter
组件内直接定义以下路由导航守卫,和钩子函数的写法一样,下面列出三种路由守卫:
beforeRouteEnter(to,from,next)0{
// 在渲染该组件的对应路由被 confirm 前调用// 不!能!获取组件实例 `this`
// 因为当守卫执行前,组件实例还没被创建
},
beforeRouteUpdate(to,from,next){
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
},
beforeRouteLeave(to,from,next){
// 导航离开该组件的对应路由时调用// 可以访问组件实例 `this`
}
vue-router讲的含详细,具体访问:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E7%BB%84%E4%BB%B6%E5%86%85%E7%9A%84%E5%AE%88%E5%8D%AB
https://router.vuejs.org/zh/guide/advanced/data-fetching.html#%E5%AF%BC%E8%88%AA%E5%AE%8C%E6%88%90%E5%90%8E%E8%8E%B7%E5%8F%96%E6%95%B0%E6%8D%AE
网友评论