浅谈vue-router中的keep-alive

391 阅读2分钟

开端:浅谈vue-router中的keep-alive

解释:keep-alive是vue-router中的一个组件,包括之前我们所学的router-view和router-link都是属于我们的一个组件

问:为什么keep-alive,router-view和router-link是一个组件呢,明明我直接在页面使用都可以的?

答:因为在路由内部源码中,已经对这三个router的东西进行了一个全局组件的注册

当你执行Vue.use(VueRouter)的时候,其实内部是执行VueRouter.install方法的
Vue.component('RouterView',View)  对router-view进行全局组件的注册
Vue.component('RouterLink',Link)  对router-link进行全局组件的注册
而keep-alive也不尽相同

1.那为什么会有我们的一个keep-alive的组件呢?

原因就是我们每个Vue实例和每个组件在创建时都会产生生命周期函数,当组件和组件进行切换的时候,生命周期函数
的destroyed会频繁地触发,也就是说我们组件切换的时候是不保留任何状态的(可以理解为http协议的无状态性),
但是如果保留状态才是我们所需要做的事情,这时候我们就能用到keep-alive了

从上述中,我们可以知道keep-alive不仅仅是一个组件,而且还可以对状态进行管理

2.那它是怎么使用的呢?

使用方法:
     <keep-alive>
         <router-view />
     </keep-alive>

3.keep-alive中的hook函数

1.activated 处于活跃的组件
2.deactivated 处于不活跃的组件
3.钩子函数的触发顺序是created --> mounted –- > actived –- >deactivated

4..keep-alive中的两个属性

1.include  包括:希望keep-alive中的组件被缓存
2.exclude  取非:希望keep-alive中的组件不被缓存

5.总结keep-alive的特点

特点:
    1.可以减少组件频繁销毁和创建的工作,提高Vue组件的效率
    2.因为组件可能很多,所以`<keep-alive>`可以设置max属性,如果超出范围,那么就会有合理的删除机制,
    采用的就是LRU算法。