先上图:

示例代码:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script type="text/javascript" src="vue.js"></script><div id="app"></div><script type="text/javascript"> var mytest = { template: ` <div>测试 {{msg}} <br> <button @click="msg+='1'" >点一下数据会更新</button> </div> `, data() { return { msg: '嗯呢' } }, // 组件创建前 beforeCreate() { console.log('组件创建前') console.log(this.msg) }, // 组件创建后 created() { console.log('组件创建后') console.log(this.msg) }, // Dom 挂载前 beforeMount() { console.log('Dom挂载前') console.log(document.body.innerText) }, // Dom 挂载后 mounted() { console.log('Dom挂载后') console.log(document.body.innerText) }, // 数据变更前 beforeUpdate() { console.log('数据更新前') console.log(document.body.innerText) }, // 数据变更后 updated() { console.log('数据更新后') console.log(document.body.innerText) }, // 组件销毁前 beforeDestroy() { console.log('组件销毁前') }, // 组件销毁后 destroyed() { console.log('组件销毁后') }, // 组件激活 activated() { console.log('组件激活') }, // 组件停用 deactivated() { console.log('组件停用') } } new Vue({ el: '#app', template: ` <div> <keep-alive><mytest v-if="mytestShow"></mytest></keep-alive> <button @click="clickDestroy">组件销毁</button></div> `, components: { mytest }, data() { return { mytestShow: true } }, methods: { clickDestroy() { this.mytestShow = !this.mytestShow } } })</script></body></html>

在需要频繁的创建和销毁组件,如果用的是v-if,可以使用activated()deactivated()对组件进行激活和停用,前提是被操作组件要用<keep alive></keep alive>包裹
例:<keep-alive><mytest v-if="mytestShow"></mytest></keep-alive>