<!--  -->
<template>
    <div class="">
        <keep-alive>
            <testa v-if="test"></testa>
            <testb v-else></testb>
        </keep-alive>
        <button @click="change">test change</button>
    </div>
</template>
<script>
import testa from "./testA";
import testb from "./testB";
export default {
    components: { testa,testb, },
    data() {
        return {
            test:true
        };
    },
    computed: {},
    watch: {
        name: {
            handler(val, oldVal) {
                /* ... */
            },
            deep: true,
            immediate: true
        }
    },
    methods: {
        change(){
            this.test = !this.test;
        }
    }
};
</script>
组件A:
<!--  -->
<template>
    <div class="">
        about-componnet
    </div>
</template>
<script>
export default {
    components: {},
    data() {
        return {};
    },
    computed: {},
    watch: {
        name: {
            handler(val, oldVal) {
                /* ... */
            },
            deep: true,
            immediate: true
        }
    },
    methods: {},
    beforeCreate() {
        console.log("A--beforeCreate");
    },
    created() {
        console.log("A--created");
    },
    beforeMount() {
        console.log("A--beforeMount");
    },
    mounted() {
        console.log("A--mounted");
    },
    beforeDestroy() {
        console.log("A--beforeDestroy");
    },
    activated() {
        console.log("A--activated");
    },
    deactivated() {
        console.log("A--deactivated");
    }
};
</script>组件B:
<!--  -->
<template>
    <div class="">
        about-componnet
    </div>
</template>
<script>
export default {
    components: {},
    data() {
        return {};
    },
    computed: {},
    watch: {
        name: {
            handler(val, oldVal) {
                /* ... */
            },
            deep: true,
            immediate: true
        }
    },
    methods: {},
    beforeCreate() {
        console.log("B--beforeCreate");
    },
    created() {
        console.log("B--created");
    },
    beforeMount() {
        console.log("B--beforeMount");
    },
    mounted() {
        console.log("B--mounted");
    },
    beforeDestroy() {
        console.log("B--beforeDestroy");
    },
    activated() {
        console.log("B--activated");
    },
    deactivated() {
        console.log("B--deactivated");
    }
};
</script>// A组件首次激活
A--beforeCreate
A--created
A--beforeMount
A--mounted
A--activated
// B组件首次激活,A组件失活
B--beforeCreate
B--created
B--beforeMount
A--deactivated
B--mounted
B--activated
// B组件失活,A组件激活
B--deactivated
A--activated
// A组件失活,B组件激活
A--deactivated
B--activated
结论:
原文:https://www.cnblogs.com/mengfangui/p/12274771.html