vue中的钩子函数一共有11个
一. 组件创建前后(beforeCreate/created)
data(){ return { a:1 },
beforeCreate(){
console.log(this.a)//undefined },
created(){
console.log(this.a)//1 }
}
二. vue启动前后(beforeMount /mounted)
vue在beforeMount时,还没有渲染数据到<div id="app"><div/>里面,此时的这个组件还是空的
当mounted时,才会往<div id="app"><div/>添加东西,也就是vue正式接管<div id="app"><div/>,可以获取#app的innerHTML查看差异;
beforeMount(){
console.log(document.getElementById('app').innerHTML)//空的
},
mounted(){
console.log(document.getElementById('app').innerHTML)//#app里的内容
}
三. 组件更新前后(beforeUpdate/updated)
四. 组件销毁前后(beforeDestroy/destroyed)
给子组件用v-if来控制它的销毁和创建(注意以下:v-show不行),所以这两个钩子函数一般用于做性能的优化。
五.组件激活时,未激活时(activated/deactivated)
这两个钩子函数呢一般配合<keep-alive><keep-alive/>来使用。
通常一个组件是很大的,如果我们总是一直创建、销毁、创建、销毁。。。这样很不合理,而且很浪费性能,这时候我们就可以用<keep-alive><keep-alive/>配合着两个钩子函数来控制组件的激活和不激活
六. 当捕获一个来自子孙组件的错误时被调用(errorCaptured)
当子孙组件报错的时候,父组件会触发这个钩子函数,并且会返回三个参数, 第一个参数是 错误对象 ,第二个参数是 报错的子孙组件 ,第三个参数是 报错的子孙组件的具体哪个地方报错。
第一个参数为错误对象、第二个错误的组件实例以及一个包含错误来源信息的字符串
(如,假如我没有定义b这个变量,但是我去console.log(b) 这一句肯定会报错,假如我把这句错误代码写在了created这个钩子函数里,那第三个参数会返回就是:created hook)