vue 生命周期及watch、computed等记录

vue的一些记录,用于加深印象

vue生命周期

image.png
  • beforeCreate 实例初始化之后,this指向创建的实例,不能访问到data、computed、watch、methods上的方法和数据 常用于初始化非响应式变量
  • created 实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到ref属性内容为空数组 常用于简单的ajax请求,页面的初始化
  • beforeMount 在挂载开始之前被调用,beforeMount之前,会找到对应的template,并编译成render函数 -
  • mounted 实例挂载到DOM上,此时可以通过DOM API获取到DOM节点,$ref属性可以访问 常用于获取VNode信息和操作,ajax请求
  • beforeupdate 响应式数据更新时调用,发生在虚拟DOM打补丁之前 适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器
  • updated 虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,可执行依赖于DOM的操作 避免在这个钩子函数中操作数据,可能陷入死循环
  • beforeDestroy 实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例 常用于销毁定时器、解绑全局事件、销毁插件对象等操作
  • destroyed 实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定

父子组件生命周期

  • 加载渲染过程

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

  • 子组件更新过程
      父beforeUpdate->子beforeUpdate->子updated->父updated

  • 父组件更新过程
      父beforeUpdate->父updated

  • 销毁过程
      父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

watch和computed

  • watch
    监听属性,当监听值发生变化时触发,包括普通对象监听和深度监听(数组,对象),其中数组对象的监听是监听数组的push等方法,
    注意:当数组对象整体替换时候,会触发多次watch方法;
  • computed
    计算属性,可以当做普通的data中的属性用,当计算属性中依赖的属性发生变化时,会自动触发;
 data:{
     a:1,
     b:{
         c:1
     }
 },
 watch:{
     a(val, oldVal){//普通的watch监听
         console.log("a: "+val, oldVal);
     },
     b:{//深度监听,可监听到对象、数组的变化
         handler(val, oldVal){
             console.log("b.c: "+val.c, oldVal.c);
         },
         deep:true //true 深度监听
     }
 }

总结:watch和computed可以根据条件使用

参考:

[https://blog.csdn.net/u012382791/article/details/97622662]

你可能感兴趣的:(vue 生命周期及watch、computed等记录)