前景:
在日常使用的时候,我们经常需要返回上一级页面的时候,不刷新页面,保持页面不变,这里就需要使用以下方法:
思路:
因为vue是单页面应用,进入其他页面时会销毁该页面,用keep-alive不让其刷新,具体实现为:
(1).在App.vue中加入:这里是所有页面切换到地方,下面代码分别对不同的设置,采用不同的渲染方式。
<template>
<div id="app">
<!--<router-view/>-->
<!--页面返回不刷新-->
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
(2).index.js页面
在需要设置不刷新的页面中,只需要添加 keepAlive: true就可以。
export default new Router({
routes: [{
path: '/',
name: 'index',
component: index,
meta: {
keepAlive: true
}
},
至此返回上级页面不刷新功能实现:因为在index.vue中,mounted方法只走一次,在浏览器上实现了返回原来滚动位置的目的。
说明
备注:一般执行完上一步的时候就已经实现方法了,如果在手机上测试,发现没用:可以试着添加下面的代码试一下:
//在页面离开时记录滚动位置
beforeRouteLeave (to, from, next) {
this.scrollTop = document.documentElement.scrollTop || document.body.scrollTop
next()
},
//进入该页面时,用之前保存的滚动位置赋值
beforeRouteEnter (to, from, next) {
next(vm => {
document.body.scrollTop = vm.scrollTop
})
},
至此完美结束,算是一个比较常见而且简单的功能了。
来源:CSDN
作者:qq_39355295
链接:https://blog.csdn.net/qq_39355295/article/details/103481869