Vue的生命周期(钩子函数)理解

lifecycle.png

这里在多提一嘴

keep-alive

什么是组件缓存? 如果对组件进行了缓存, 就是 一旦组件被创建, 那么就不会在切换组件时被销毁。

格式:

<keep-alive>
    要缓存的内容
</keep-alive>

一般在动态组件和路由组件时使用。

activated和deactivated

对于组件如果采用了keep-alive,则组件会多出两个钩子函数:

activated: 组件激活

deactivated:组件失活

<div id="app">
        <button @click="comName='mycom1'">显示mycom1</button>
        <button  @click="comName='mycom2'">显示mycom2</button>

        <!-- commponent是vue中动态组件:它是一个容器,自已是没有内容,你可以在其中放入任意的组件 
        它有一个属性名:is ,值是一个字符串,就是当前注册的组件的名字

        keep-alive: 用来对组件进行缓存。
        缓存之后:
          1. 组件的切换就不会再去执行销毁和创建了。只需创建一次。
          2. 组件多出两个钩子函数:
             activated和deactivated,分别表示组件处于激活和失活状态
        
        主要应用场景,有两个:
        (1)里面放动态组件
            <keep-alive>
                <component :is="comName"></component>
            </keep-alive>
        (2)里面放路由出口
            <keep-alive>
                <router-view></router-view>
            </keep-alive>
        -->
        <keep-alive>
            <component :is="comName"></component>
        </keep-alive>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            components: {
                mycom1: {
                    template: `<div> 子组件MyCom1 {{d}}</div>`,
                    data(){return {d: Date.now()}},
                    activated(){
                        console.log('com1处于激活状态')
                    },
                    deactivated () {
                        console.log('com1处于失活状态')
                    },
                    created() {
                        console.log('com1:创建')
                    },
                    destroyed() {
                        console.log('com1: destory')
                    }
                },
                mycom2: {
                    template: `<div> 子组件MyCom2</div>`,
                    created() {
                        console.log('com2:创建')
                    },
                    destroyed() {
                        console.log('com2: destory')
                    },
                    activated(){
                        console.log('com2处于激活状态')
                    },
                    deactivated () {
                        console.log('com2处于失活状态')
                    },
                },
            },
            data: {
                comName: 'mycom1'
            }
        })
    </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容