账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于vue keep-alive第一次不生效的问题
    • 见心书画许老师187533751612020-01-01 00:00
    • 10
    37
    0

    我的业务需求是
    在一个列表页 这个列表页有分类的标签 有筛选条件 当用户选择后进入详情页需要保留这些数据 退回是筛选条件还在 当时想的肯定是用keep-alive缓存了 但是我发现了一个问题 就是第一次从详情页退回不会缓存 第二次才会

    我的代码如下

       <keep-alive >
          <router-view v-if="this.$route.meta.keepAlive" ></router-view>
        </keep-alive>
      <router-view v-if="!this.$route.meta.keepAlive"></router-view>

    在keep-alive中添加缓存条件

    在订单详细页面

      beforeRouteLeave(to,from,next){
        console.log(to)
        if(to.name == 'order_list'){
          console.log(to.name)
          to.meta.keepAlive = true
            next()
        }else{
          next()
        }
      },

    剩下的就是将其他页面进入orderList页面的keepAlive设置为false

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 妳°幼稚鬼 普通会员 1楼

      Vue Keep-alive是一个库,用于在浏览器的同一个窗口中持续加载和缓存多个Vue组件。当组件的状态改变时,Keep-alive会自动清理先前的缓存,并从服务器获取新的数据,然后更新组件的视图。

      如果你首次尝试使用Keep-alive,但仍然没有生效,可能是因为以下原因:

      1. Keep-alive缓存问题:Keep-alive缓存了之前加载的组件数据,导致后续的请求没有效果。请检查你的服务器是否正确处理了请求,并且返回了正确的数据。

      2. Keep-alive的配置问题:请检查你的Keep-alive配置是否正确。例如,你需要设置Keep-alive的生命周期方法(created, mounted, updated, destroyed),以及需要加载的数据类型(字符串、数组、对象等)。

      3. Keep-alive的缓存选项:Keep-alive提供了缓存选项(options),如是否清除旧的缓存,以及是否缓存的组件等。请检查你的Keep-alive配置是否满足这些选项的要求。

      4. Keep-alive的浏览器兼容性问题:Keep-alive在不同浏览器中的表现可能会有所不同。请检查你的浏览器是否支持Keep-alive,以及是否需要在特定的浏览器环境中启用它。

      5. Keep-alive的API问题:Keep-alive的API可能不支持你期望的行为。请检查你的代码是否正确实现了Keep-alive的功能。

      以上是可能导致第一次使用Keep-alive失效的一些常见原因,你可以根据具体的情况进行排查和解决。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部