vue中 keep-alive+transition+router-view使用

学习vue的一周里,记录下比较实用的东西。
在使用vant组件库时,发现了List列表组件,官网文档解释的比较详细,感觉挺好用的。
后来希望可以在列表页加上一个缓存,这样来回切换页面就不需要重新刷新列表,由于我在router-view上已经套过动画标签如下:

    <transition :name="transitionName">
        <router-view />
    </transition>

再嵌套keep-alive后动画就没有了
后来发现keep-alive有两个属性, 记录一下。

include: 字符串或正则表达式。只有匹配的组件会被缓存。
exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。

<keep-alive include="test-keep-alive">
 <!-- 将缓存name为test-keep-alive的组件 -->
 <component></component>
</keep-alive>

<keep-alive include="a,b">
 <!-- 将缓存name为a或者b的组件,结合动态组件使用 -->
 <component :is="view"></component>
</keep-alive>

<!-- 使用正则表达式,需使用v-bind -->
<keep-alive :include="/a|b/">
 <component :is="view"></component>
</keep-alive>

<!-- 动态判断 -->
<keep-alive :include="includedComponents">
 <router-view></router-view>
</keep-alive>

<keep-alive exclude="test-keep-alive">
 <!-- 将不缓存name为test-keep-alive的组件 -->
 <component></component>
</keep-alive>

结合动画标签可如下描述:

   <transition :name="transitionName">
     <keep-alive include="ShouYe">
       <router-view />
     </keep-alive>
   </transition>

利用路由来分开展示

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 的 `keep-alive` 组件可以缓存动态组件,避免频繁地销毁和创建组件,提高应用的性能。使用 `keep-alive` 组件的步骤如下: 1. 在需要缓存的组件外层添加 `keep-alive` 组件。 ```html <template> <keep-alive> <router-view /> </keep-alive> </template> ``` 2. 在需要缓存的组件上添加 `v-slot` 指令,并设置 `name` 属性。 ```html <template> <div v-slot="{ Component }"> <transition> <component :is="Component" /> </transition> </div> </template> <script> export default { name: 'MyComponent', created() { console.log('MyComponent created'); }, destroyed() { console.log('MyComponent destroyed'); }, }; </script> ``` 在上面的代码,我们定义了一个组件 `MyComponent`,并在组件添加了 `created` 和 `destroyed` 钩子函数,用于在组件被创建和销毁时输出日志。 3. 在使用 `MyComponent` 的地方,添加 `keep-alive` 组件的 `include` 属性,并设置为 `MyComponent`。 ```html <template> <div> <button @click="toggle">Toggle Component</button> <keep-alive :include="['MyComponent']"> <component :is="currentComponent" /> </keep-alive> </div> </template> <script> import MyComponent from './MyComponent.vue'; export default { components: { MyComponent, }, data() { return { currentComponent: null, }; }, methods: { toggle() { this.currentComponent = this.currentComponent === MyComponent ? null : MyComponent; }, }, }; </script> ``` 在上面的代码,我们使用 `MyComponent` 组件,并且在组件外层添加了 `keep-alive` 组件,并设置了 `include` 属性,用于缓存 `MyComponent` 组件。 当我们点击按钮切换组件时,可以看到 `MyComponent` 组件在第一次被创建时输出日志,切换组件时不会再次被创建,而是被缓存起来了。当我们销毁 `MyComponent` 组件时,也会输出日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值