每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁
当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。
<div id="app"> <button @click="comp=(comp==='my-a'?'my-b':'my-a')">实现组件切换</button> <keep-alive> <component :is='comp'></component> </keep-alive> </div> Vue.component("my-a",{ template:"<div>这是my-a组件</div>", created(){ console.log("a-created..") }, activated(){ console.log("activated...") this.timer = setInterval(()=>{ },3000) }, deactivated(){ console.log("deactivated...") clearInterval(this.timer) }, beforeDestroy(){ console.log("a-beforeDestroy...") } }) Vue.component("my-b",{ template:"<div>这是my-b组件</div>" }) new Vue({ el:"#app", data:{ comp:"my-a" } })Vue.nextTick() or this.$nextTick()
在下次 DOM 更新循环结束之后执行延迟回调。
在修改数据之后立即使用这个方法,获取更新后的 DOM。
// 修改数据 vm.msg = 'Hello' // DOM 还没有更新 Vue.nextTick(function () { // DOM 更新了 }) Vue.nextTick() .then(function () { // DOM 更新了 })