需求:项目中需要开发一个导航栏,类似浏览器的导航,没有关闭的时候页面缓存,关掉之后,页面随之销毁。(如图)


项目是使用Vue + Vue-Router + Vuex

刚开始使用的方法是:关闭导航标签,直接调用对应的页面的$destory()方法,OK,可以实现关闭页面(下次再打开该页面,将初始化)的功能,但是遇到个问题:
该页面将不再被缓存,也就是说切换导航tab时,页面将不断的被初始化!!!

查了一下文档,找了度娘,没发现解决方法,又去请教G哥,这才发现原来Vue keep-alive真的有这个问题哎,这个是(链接),要么你自己去看,要么看我的解决方法,嘿嘿嘿,不瞎扯啦,上方法,其实Vue的文档里面也写了的这里:

keep-alive 可以传入两种参数,贴一下官方说明:

include 和 exclude 属性允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示:
< keep-alive include=”a,b”>
< component :is=”view”>
< /keep-alive>
< !– 正则表达式 (使用 v-bind) –>
< keep-alive :include=”/a|b/”>
< component :is=”view”>
< / keep-alive>
< !– 数组 (使用 v-bind) –>
< keep-alive :include=”[‘a’, ‘b’]”>
< component :is=”view”>
< /keep-alive>`
匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的>>键值)。匿名组件不能被匹配。

keep-alive 不会在函数式组件中正常工作,因为它们没有缓存实例。

差不多看明白了吧,页面的销毁不一定非得调用$destory() 去做,我理一下思路(include):
首先在vuex里面定义一个数组 includePageNames,这个数组存放的是当前导航栏上显示的页面的名字name(在每个页面的Vue文件中,定义name的值)

  1. 当页面打开的时候,将该页面的name加($commit)到includePageNames中
  2. 当页面关闭的时候,将includePageNames中该页面对应的name移除掉,这时候该页面液将从缓存中被移除,这不就达到我们想要的结果了吗

具体代码我就不上了,就提一下我遇到的问题:keep-alive 给它传入includePageNames(数组),居然报错,原因是它实际上需要一个正则表达式、或者一个逗号分隔的String,没办法啦,直接将includePageNames.toString()传过去就OK啦

Vue使用keep-alive,调用 $destory() ,页面不再被缓存的解决方法相关推荐

  1. Vue打包后通过springboot运行页面为空白页的解决方法

    第一种可能是index.html里面js和css引用的路径问题,在index,html里面的css和js引用处 /前面加上/dist或者. 就可以了.记得每一个都要加. 第二种可能是路由使用了hist ...

  2. vue在微信里面的兼容问题_微信H5页面兼容性问题分析及解决方法

    随着H5页面越来越流行,越来越多的开发者都开始用最近H5做微信公众号,在这个过程中自然也会遇到不少的问题.小编在这里整理了五种常见的微信H5页面兼容性问题,来和大家分析一下问题的详情.出现原因以及相对 ...

  3. c2010页面闪现_vue使用v-if v-show页面闪烁,div闪现的解决方法

    在页面层次结构,数据较多的时候,用v-if或者v-show就会出现div闪现,或者部分闪烁的结果. 可以在根元素添加v-cloak来解决,并且设置它的样式即可. 代码只是示例,还需要自己修改测试. D ...

  4. php 跳转历史页面,js不记录页面跳转历史的解决方法

    js不记录页面跳转历史的解决方法 在实际工作中,我们会遇到一个页面中有几个tab切换标签,tab切换是修改了浏览器地址",tab切换是默认记录到历史的.因此我们点击返回按钮的时候,不停的在几 ...

  5. vue启动项目报错:npm ERR! missing script: serve解决方法

    vue启动项目报错:npm ERR! missing script: serve解决方法 1.vue启动项目报错:npm ERR! missing script: serve 问题原因: 在配置文件中 ...

  6. phpstudy中php页面不识别php代码解决方法

    phpstudy中php页面不识别php代码解决方法 参考文章: (1)phpstudy中php页面不识别php代码解决方法 (2)https://www.cnblogs.com/dailinfu/p ...

  7. i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法

    i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法 参考文章: (1)i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法 (2)https://www.cnblogs.com/ ...

  8. Nginx启动成功但页面访问不到的解决方法

    解决Nginx启动成功但页面访问不到的解决方法: 1.首先查看Nginx进程:ps -ef | grep nginx 如图所示,代表Nginx启动成功.(相关阅读推荐:Nginx启动不起来怎么办) 2 ...

  9. 校园网登陆页面跳转不出来解决方法

    校园网登陆页面跳转不出来解决方法 可以输入任意一个ip地址即可解决 参考文章https://blog.csdn.net/o_ogou/article/details/102974200 原因: 百度的 ...

最新文章

  1. 使用WinINet和WinHTTP实现Http访问
  2. 1一10到时的英文单词_10张“牛皮癣”可换1个鸡蛋!徐州一街道全民总动员
  3. NYOJ 527 AC_mm玩dota
  4. elk之elasticsearch(二)
  5. 优化案例(part2)--Fragmentary label distribution learning via graph regularized maximum entropy criteria
  6. 如何使用Java和XML Config在Spring Security中启用HTTP基本身份验证
  7. 量子计算机首次成功模拟化学反应
  8. cat-grep-sed应用案例
  9. mysql8.0与mysql7.0_MySQL 5.7 vs 8.0,哪个性能更牛?
  10. PHP对数组的高级遍历和操作处理方法
  11. java期末判断题题库_(java期末考试选择题题库.doc
  12. Android写log到文件模版
  13. qq西游服务器制作教程,QQ西游修罗版开区一键服务端+完整客户端+GM辅助工具+教程...
  14. 基于ESP32制作流光溢彩氛围灯
  15. 软件渗透测试:定义、需求、过程
  16. 游戏音效制作需要哪些要求
  17. 微软windows自带邮箱设置和使用(更改windows10账户绑定邮箱)qq邮箱绑定windows邮箱,163邮箱绑定windows邮箱,阿里云邮箱绑定windows邮箱
  18. Java常见问题之Data too long for column 'orResponse' at row 1
  19. 小福利,python内置map函数和lambda函数运用
  20. 将光标从下划线变成竖线的方法

热门文章

  1. root后手机银行用不了,root之后手机银行不能用
  2. mysql数据库教学系统设计_MySQL-教学系统数据库设计
  3. H5使用微信支付(微信内部浏览器和其他浏览器)
  4. Java根据多个文件URL打包成一个压缩包下载
  5. canvas实现雪花飘落
  6. 模式识别八--三层BP神经网络的设计与实现
  7. JavaScript写一个虚拟软键盘,可拼音输入
  8. 基数排序(桶排序)思路分析及代码实现
  9. 新买的显示器怎么测试软件,新买的电视如何检测屏幕?记住这个方法
  10. 软件测试之---测试设计方法