kepp-alive在vue-router中使用
keep-alive 是 Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染;
keep-alive 有两个重要的属性:
- include(包含) : 字符串或正则表达式,只有匹配的组件会被缓存
- exclude (不包含):字符串或正则表达式,任何匹配的组件都不会被缓存 ,如果是多个后面紧跟不包含的组件name,用
,
隔开,注意:不要敲空格键
router-view 也是一个组件,如果直接被包在keep-alive 里面,所有路径匹配到的视图组件都会被缓存
案例需求
当我们在不同的组件之间来回切换的时候,组件会不断的进行创建和销毁;如下图当在home和其他组件来回切换时,home组件被不断的创建和销毁的示例:
加入标签<keep-alive>
如下
需求: 当我们浏览首页中的消息后;然后在跳转到其他组件,最后又回到首先组件,但是希望的页面是我之前浏览的消息页面,而不是默认的新闻页面
优化代码如下:
注:activated()和 disactivated() 只有在该组件被保持了状态使用了<keep-alive>
时,才是有效的