Vue(keep-alive)指定单页返回到页面不刷新,即保存状态

遇到的问题

在开发过程中,从form单页跳转到品牌选择页,选择成功后返回到form页,需要保持form页的状态不变,即内容不刷新。
众所周知,我们可以用keep-alive来实现,keep-alive是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

实现所有页面不刷新

<keep-alive>
      <router-view ></router-view>
</keep-alive>

但是这样并不是我所需要的效果,我只需要从品牌页跳转到form页实现不刷新。

实现指定页面返回不刷新

  1. 在路由router/index.js里面,在需要被缓存的组件路由设置keepAlive:true
 {
      path: '/form',
      name: 'form',
      component: form,
      meta:{
        keepAlive:true,
        title: '表单应用'
      }
    },
  1. 在App.vue把代码修改成如下。
    解释:路由的meta属性的keepAlive属性值为true时页面保存状态,其他情况不保存状态
 <keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
 </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
  1. 在form.vue修改
    解释:form页跳转到其他页面时,把form页的keepAlive值设置为false
 //修改form的keepAlive值为false时,再次进入页面会重新请求数据,即刷新页面
 beforeRouteLeave(to,from,next){
      from.meta.keepAlive = false;
      next();
    },
  1. 在品牌页修改
    解释:品牌页跳转到form.vue的时候,把form组件的keepAlive值设置为true,缓存form的状态,其他时候还是false
 beforeRouteLeave(to,from,next){
        if(to.path == "/form"){
          to.meta.keepAlive = true;
        }else{
          to.meta.keepAlive = false;
        }
        next();
      },
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值