分析:路由刷新是在路由的组件切换的时候才会自动刷新的,created函数才能执行。倘若几篇博客使用的是同一个组件展示,只有传入的参数不同,浏览器的url地址组件部分的地址不变化,则组件不会重新加载。
如下图:从博客1切换到博客2时,右侧组件不会自动刷新。
倘若通过左侧点击执行类似F5的强制刷新,则会出现空白页面间隙,影响用户体验
解决方法:
引入第三方页面中转,第三方页面可以命名为refresh.vue,过程中refresh组件并未加载,进入之前解析地址,用解析到的地址替换本页面,就中转完毕。
原来是:
<router-link to="/edit/1">博客1</router-link>
那么现在就是:
- 改按钮的路由地址(上游)
<router-link to="/refresh/edit/1">博客1</router-link>
- 注册第三方页面(中游)
//router.js里面注册refresh
import refresh from './views/refresh'//import部分
{path:'/refresh/edit/:id',name:'refresh',component:refresh}//路径配置部分
- 第三方页面内容为(下游)
//第三页面refresh.vue里面的内容,起到中转的作用。
<template>
<div>
</div>
</template>
<script>
export default {
beforeRouteEnter(to, from, next) {
next(vm => {
vm.$router.replace(to.path.slice(8,))//replace是用()里面的页面替代本页面(空页面)
//to.path是"/refresh/edit/1",slice(8,)之后便是"/edit/1",与目的一致
})
}
}
</script>