keep-alive是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。 用法 <keep-alive> <component> <!-- 该组件将被缓存! --> </component> </keep-alive> props include - 字符串或正则表达,只有匹配的组件会被缓存 exclude - 字符串或正则表达式,任何匹配的组件
但keep-alive的渲染是在patch阶段(构建组件树(虚拟DOM树),并将VNode转换成真正DOM节点的过程) 1、在首次加载被包裹组件时,由keep-alive.js中的render函数可知,vnode.componentInstance的值是undfined,keepAlive的值是true,因为keep-alive组件作为父组件,它的render函数会先于被包裹组件执行;那么只执行到i(vnode,false...
用keep-live 包裹 router-view <keep-alive> <router-view :key="key" /> </keep-alive> 用途是把第一次创建的组件缓存下来 但是有些组件我们不希望把它缓存下来 原因是组件被缓存后created生命周期就只能触发一次,所以我们可以用 activated 代替 created,当组件被切换后,会触发 deactivated 生命周期函数 官网...
在Vue中,可以使用<keep-alive>标签包裹需要缓存的组件。keep-alive默认开启了缓存,如需关闭缓存,可以设置其exclude属性为true。 基本用法如下: ```html <template> <keep-alive> <component :is="componentName"></component> </keep-alive> </template> export default { data() { return { componentName...
最近在使用vue + element-UI开发的后台管理项目中,优化 keep-alive 的使用方式时遇到了一些问题 优化前使用的 if 判断来控制页面是否可以缓存,这样做页面切换的动画效果不是太理想 <transition> <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> ...
在开始讨论exclude属性之前,让我们先来了解一下keep-alive的基本用法。在Vue中,我们可以使用keep-alive指令将组件进行缓存,以避免组件的重复渲染。这对于一些静态页面或者需要缓存的页面来说非常有用,可以有效地提升页面的加载速度和用户体验。 2. keep-alive的基本用法 在Vue中,我们可以将需要缓存的组件用<keep-alive...
exclude属性 exclude相当于include的反义词,就是除了的意思,指定哪些组件不被缓存,用法和include类似,如下: // 除了home组件和about组件别的都缓存,本例中就是只缓存detail组件 <keep-alive exclude="home,about" > <router-view></router-view> </keep-alive> 以include="about,detail"为例的效果图 语法的意思...
Detail.vue中的子组件Comm.vue activated () { window.addEventListener('scroll', this.handleScroll) }, deactivated () { window.removeEventListener('scroll', this.handleScroll) } vue中在keep-alive中exclude设置了某个组件,这个组件中的子组件不执行activated函数?这段代码该如何修改?vue...
- exclude:不需要缓存的组件列表,支持正则表达式匹配。 - maxAge:缓存组件的最大年龄,超过该年龄的组件将被重新创建。 使用KeepAlive 组件非常简单,只需在需要缓存的组件上添加`v-keep-alive`属性即可。例如: ```html <template> <keep-alive> <router-view></router-view> </keep-alive> </template> `...
3.当同时使用include和exclude的时候,exclude的优先级会更高,include就不生效 4.缓存了组件之后,再次进入组件不会触发beforeCreate、created 、beforeMount、 mounted,如果你想每次进入组件都做一些事情的话,你可以放在activated进入缓存组件的钩子中。同理:离开缓存组件的时候,beforeDestroy和destroyed并不会...