温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

vue使用keep-alive后从部分页面进入不缓存怎么解决

发布时间:2023-05-11 15:15:10 来源:亿速云 阅读:114 作者:iii 栏目:开发技术

这篇文章主要介绍了vue使用keep-alive后从部分页面进入不缓存怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue使用keep-alive后从部分页面进入不缓存怎么解决文章都会有所收获,下面我们一起来看看吧。

需求:

1:当前有页面A-B-C三个板块;

2:从页面C返回页面B时,B页面数据之前数据不会被清空(keep-alive),且C页面携带到B页面的数据缓存(event-bus/vuex);

3:从A-页面进入B页面时,B页面为初始化状态。

实现:

1:借用路由钩子函数,在进入B页面时,对当前页面进行兼容处理;

修改router路由中配置项

配置meta属性和isBack标识,判断当前页面是从C页面返回还是从其他页面进入,具体配置如下:

{
    path: '/B',
    name: 'B',
    component: require('@/page/index.vue'),
    meta: {
        keepAlive: true, //当前页面是否缓存,搭配keep-alive使用
        isBack: false // 判断当前页面是从C页面返回还是从其他页面进入,默认从A页面进入
    }
},

判断当前页面是否需要缓存的页面

再B页面判断当前页面跳转方式,通过beforeRouteEnter(to, from, next),来判断路由是从哪里来跳转的,如果是从C跳转的,则将当前路由对象的meta.isBack设置为true,否则设为false。具体实现如下:

beforeRouteEnter(to, from, next) {
    if (from.path == "/C") {
        to.meta.isBack = true; 
    } else {
        to.meta.isBack = false;
    }
    next();
},

不需要缓存页面,重置B页面数据

从非C页面进入B页面时,都应重置当前页面数据,所以需要在页面加载之前(即activated),将之前获取到的数据以及查询条件清空。
activated()与deactivated()是两个生命周期钩子(生命周期函数)。
activated()与deactivated()是路由组件所独有的两个生命周期钩子,用于捕获路由组件的激活状态。
activated路由组件被激活时触发。
deactivated路由组件失活时触发。

activated() {
    let that = this;
    // 第一次和非C页面进入B页面时 isBack都为false,即需要重置数据
    if (!this.route.meta.isBack) {
        // 重置数据操作
       
    }
    this.route.meta.isBack = false;
},

关于“vue使用keep-alive后从部分页面进入不缓存怎么解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vue使用keep-alive后从部分页面进入不缓存怎么解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI