• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小码哥-倩倩
博客园    首页    新随笔    联系   管理    订阅  订阅

VUE使用keep-alive之后数据无法实时更新问题

问题描述:

根据需求实现在列表页点击“编辑”进行修改某项数据,修改完成返回之后,依旧保留在原位置,保留之前的查找条件和之前的数据,使用vue中的<keep-alive>之后,返回列表页时不刷新页面,依旧保持之前的数据,无法展示修改之后的最新消息。

解决办法:

借用组件内的守卫beforeRouterEnter(){}方法,
beforeRouteEnter(to,from,next){

},
每次进入之后取到编辑之后的最新数据,然后把现有的列表中对应的数据进行修改,修改之后进行强制刷新,这样就可以实现需要的效果了。

 beforeRouteEnter 守卫 不能 访问 this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建。

 不过,你可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。 

beforeRouteEnter (to, from, next) {
  next(vm => {
    // 通过 `vm` 访问组件实例
  })
}
注意 beforeRouteEnter 是支持给 next 传递回调的唯一守卫。对于 beforeRouteUpdate 和 beforeRouteLeave 来说,this 已经可用了,所以不支持传递回调,因为没有必要了。 
posted @ 2019-10-10 16:54  小码哥-倩倩  阅读(3294)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3