下面执行顺序为弹出1,33,3,2
也就是说监听虚拟dom的vue项目,首先执行created,mounted,然后返回给真实dom的文档加载,然后再是所有文档加载完毕。
再来看来<keep-alive>组件:
讲不通就上代码:
<template> <div id="app"> {{state}} <keep-alive> <A v-show="state==‘A‘" /> <B v-show="state==‘B‘" /> <C v-show="state==‘C‘" /> </keep-alive> <el-button @click="state=‘A‘">a</el-button> <el-button @click="state=‘B‘">b</el-button> <el-button @click="state=‘C‘">c</el-button> <div> <router-link to="/sublime">sublime</router-link> <router-link to="/active">active</router-link> <router-view></router-view> </div> </div> </template> <script> // window.onload = function() { // alert(2) // } // document.addEventListener(‘DOMContentLoaded‘, function() { // alert(3) // }) import A from ‘./components/a.vue‘ import B from ‘./components/b.vue‘ import C from ‘./components/c.vue‘ export default { created() { alert(1) }, mounted() { alert(33) }, destroyed() { console.log(this.state, ‘destroyed‘) }, components: { A, B, C }, data() { return { state: ‘A‘ } } }
另外,router的跳转其实也是会销毁组件的。
原文:https://www.cnblogs.com/coderwhytop/p/14876424.html