美文网首页
vue组件切换与keep-alive缓存机制

vue组件切换与keep-alive缓存机制

作者: Mr无愧于心 | 来源:发表于2018-05-24 15:56 被阅读0次

1.组件切换

点击哪个按钮显示对应的组件 (其中存在组件的销毁)每次切换都会走一遍created mounted钩子函数

<div id="app">
   
    <div class="container">
        <div @click="comp='zujian1'">显示组件1</div>
        <div @click="comp='zujian2'">显示组件2</div>
    </div>
    <div :is="comp"></div>
</div>
...
//关键是-----------------   :is用于绑定组件
var app=new Vue({
        el:'#app',
        data:{
            comp:'zujian2',
        },
       mounted(){
            alert('子组件挂载完,父组件才会挂载完')
        },
        components:{
            zujian1:{
                template:'<h1>组件1</h1>',
                mounted(){
                  alert('重新渲染dom')
                },
                beforeDestroy(){
                  alert('销毁了')
                }
            },
            zujian2:{
                template:'<h1>组件2</h1>',
                mounted(){
                  alert('重新渲染dom')
                },
                beforeDestroy(){
                  alert('销毁了')
                }
            }
        }
    })

2.缓存机制keep-alive

不会再走mounted,beforeDestroy函数,因为组件被缓存,不用销毁重新渲染,性能比较好

<div id="app">
    <div class="container">
        <div @click="comp='zujian1'">显示组件1</div>
        <div @click="comp='zujian2'">显示组件2</div>
    </div>
    <keep-alive><!--一般用作缓存:为的是后面的路由做准备,如果缓存了就不会再走created mounted钩子函数-->
    <div :is="comp"></div>
    </keep-alive>
</div>
...
var app=new Vue({
        el:'#app',
        data:{
            comp:'zujian2',
        },
        //需要等待子组件挂载完成后再触发父组件的挂载
       mounted(){
            alert('子组件挂载完,父组件才会挂载完')
        },
        components:{
            zujian1:{
                template:'<h1>组件1</h1>',
                mounted(){
                  alert('重新渲染dom')
                },
                beforeDestroy(){
                  alert('销毁了')
                }
            },
            zujian2:{
                template:'<h1>组件2</h1>',
                mounted(){
                  alert('重新渲染dom')
                },
                beforeDestroy(){
                  alert('销毁了')
                }
            }
        }
    })

组件的选择性缓存 include exclude

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

路由的选择性缓存

<keep-alive v-if='$route.meta.keep'>
  <!-- 将缓存name为a或者b的组件,结合动态组件使用 -->
  <vue-router></vue-router> 
</keep-alive>
<vue-router  v-if='!$route.meta.keep'></vue-router> 

相关文章

  • vue实现tab标签切换页面

    将标签存放在Tags.vue,使用组件传值进行切换。增加keep-alive缓存机制 首先展示效果图如下: 在ho...

  • vue中动态路由组件缓存及生命周期函数

    vue动态路由组件缓存 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复...

  • vue组件切换与keep-alive缓存机制

    1.组件切换 点击哪个按钮显示对应的组件 (其中存在组件的销毁)每次切换都会走一遍created mounted...

  • vue 的keep-alive

    vue 的keep-alive Vue 实现组件信息的缓存 当我们在开发vue的项目过程中,避免不了在路由切换到其...

  • keep-alive

    概念 keep-alive 是 vue 内置的组件,用 keep-alive 包裹组件时,会缓存不活动的组件实例,...

  • vue2.0中keep-alive实践

    vue2.0中keep-alive实践 vue2.0提供了一个keep-alive组件,用来缓存组件,避免多次加载...

  • VUE 动态组件&异步组件

    在动态组件中使用 keep-alive 在动态组件中使用keep-alive可一缓存组件 在组件切换的时候不会重新...

  • 重学Vue--keep-alive的使用

    keep-alive是什么? keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件...

  • [vue3进阶] 8.keepAlive

    keep-alive是vue自带的一个标签,用keep-alive包裹的组件,在这个组件不活动时,vue会自动缓存...

  • vue的<keep-alive>

    vue的是Vue的内置组件,能在组件切换过程中将状态保留在内存中,...

网友评论

      本文标题:vue组件切换与keep-alive缓存机制

      本文链接:https://www.haomeiwen.com/subject/bnesjftx.html