当前位置:网站首页 > Vue.js开发 > 正文

vue缓存之动态keep-alive

今天遇到一个优化需求,用vue写的webapp,客户想要从商品列表页到商品详情页然后点击返回的时候商品列表页不刷新,但是从活动页面进入商品列表页的时候商品列表页需要刷新,在网上查了一下,vue的keepAlive抽象组件可以实现。

参考了一篇挺全的技术博客:https://www.jianshu.com/p/11f7dbc07ad3,里面的几种方案都试了一下,确实却在一些bug,从活动页进去有时候还是进的缓存的页面。调用销毁组件的方式只能成功一次,后面就都缓存不上了。

我的最优解决方案:缓存页面仍然设置成keepAlive:true,这样每次这个页面都是缓存的,在需要刷新时再在缓存的页面根据参数动态调用初始化数据接口刷新。此动态刷新参数交由vuex管理。

1.商品路由参数:仍然设置成keepalive:true,缓存此页面

2.vuex设置一个是否缓存数据的标识

3.商品列表用watch监听状态的变化,isCacheProductList==true就不刷新数据,false就重新加载数据。

商品加载成功以后更新状态,isCacheProductList状态未默认的状态true

4.活动组件在跳转之前,更改vuex里面的状态为false,即不缓存,刷新页面

 总结:原理就是页面仍然时缓存的,只是需要刷新的时候根据状态手动更新状态,重新加载数据实现刷新。

到此这篇vue缓存之动态keep-alive的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 前端js常用正则验证2024-11-29 20:00:06
  • Nginx配置设置反向代理报错: (13: Permission denied) while connecting to upstream, client: ...2024-11-29 20:00:06
  • vue打包项目以后白屏和图片加载不出来问题解决方法2024-11-29 20:00:06
  • vue-cli3 移除生产环境console.log打印的日志2024-11-29 20:00:06
  • centos7离线安装mysql5.72024-11-29 20:00:06
  • 阿里云centos7安装mysql5.72024-11-29 20:00:06
  • eclipse 最新版本“Oxygen Release (4.7.0)”在线安装hibernate插件2024-11-29 20:00:06
  • js封装,小写金额转化为大写金额,用于发票金额、合同资金等2024-11-29 20:00:06
  • 自定义vue指令v-drag & 封装自定义可拖拽弹框 & id定义样式、computed实现动态style动态class & 具名插槽name属性定义slot & 引入全局组件 & 定义全局样式2024-11-29 20:00:06
  • vue中,表单增加一行删除一行上移一行下移一行2024-11-29 20:00:06
  • 全屏图片