keep-alive 是什么
- keep-alive 是 vue 的内置组件,它自身不会渲染成一个 DOM,也不会出现在父组件链中,
- 使用 keep-alive 包裹的组件会有
activated和deactivated两个事件;activated:组件激活时调用,deactivated:组件停用时调用,这两个钩子在服务器端渲染期间不被调用 - 不使用 keep-alive:生命周期钩子(beforeRouteEnter --> created --> mounted --> destroyed)
- 使用 keep-alive:生命周期钩子(beforeRouteEnter --> created --> mounted --> activated --> deactivated),再次进入的生命周期(beforeRouteEnter -->activated --> deactivated)
keep-alive 的 props
- include ,值为字符串、正则、数组,匹配到的会被缓存
- exclude,值为字符串,正则,数组,匹配到的不会被缓存
- max,值为数组,最多可以缓存多少组件
<keep-alive include="a,b"><component /></keep-alive>
<keep-alive include="/a|b/"><component /></keep-alive>
<keep-alive include="['a','v']"><component /></keep-alive>
router-view 与 keep-alive 的使用(前进刷新,后退不刷新)
- 方法一:keep-alive
- 方法二
子路由层级比父路由高,既保证了返回不刷新,前进刷新,也可以记住父路由的滚动位置,但是子路由的页面因为设置了 z-index(只有定位元素设置 z-index 才有效),所以页面的滚动会有问题,一般推荐第三方库解决,我一般使用better-scroll
确认评论邮箱
邀请制评论