两个以上路由,a->b->c ... 前进时每次进入页面都要请求数据,...c->b->a返回时不再请求数据,读取缓存内容,类似移动端APP的效果。
查阅资料发现目前基本都是靠keep-alive和beforeRouteLeave结合使用的。
<keep-alive>
<router-view v-if="$route.meta.keepAlive">
<!-- 这里是会被缓存的视图组件,比如 Home! -->
</router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive">
<!-- 这里是不被缓存的视图组件,比如 Edit! -->
</router-view>
// routes 配置
export default [
{
path: '/',
name: 'home',
component: Home,
meta: {
keepAlive: true // 需要被缓存
}
}, {
path: '/:id',
name: 'edit',
component: Edit,
meta: {
keepAlive: false // 不需要被缓存
}
}
]
export default {
data() {
return {};
},
methods: {},
beforeRouteLeave(to, from, next) {
// 设置下一个路由的 meta
to.meta.keepAlive = true; // 让 A 缓存,即不刷新
next();
}
};
以上代码都出自简书上下面这个大佬的文章
作者:RoamIn
链接:http://www.jianshu.com/p/0b0222954483
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
经过一周的努力,已经解决另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新