vue2.0

一、vue computed 和 watch 的区别 使用场景

   computed:

  1. 有缓存机制、依赖项发生改变重新计算。
  2. 不支持异步,当computed 内部有异步操作时、无法监听数据变化
  3. 不需要在data里声明
  4. 一个属性受多个属性影响时使用
  5. 使用 场景:购物车结算

   watch:

  1. 没有缓存机制,数据发生变化直接触发
  2. 支持异步操作
  3. 必须在data里声明
  4. 数据变化时执行异步或开销较大的操作(一条数据影响多条数据的时候)
  5. 使用场景:搜索、滚动锚点定位

二、vue响应式原理?详细说一下过程。

https://juejin.cn/post/6850418111985352711

三、vue的生命周期

beforeCreate是new Vue()之后触发的第一个钩子,在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。

created在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更改数据不会触发updated函数。可以做一些初始数据的获取,在当前阶段无法与Dom进行交互,如果非要想,可以通过vm.$nextTick来访问Dom。

beforeMount发生在挂载之前,在这之前template模板已导入渲染函数编译。而当前阶段虚拟Dom已经创建完成,即将开始渲染。在此时也可以对数据进行更改,不会触发updated。

mounted在挂载完成后发生,在当前阶段,真实的Dom挂载完毕,数据完成双向绑定,可以访问到Dom节点,使用$refs属性对Dom进行操作。

beforeUpdate发生在更新之前,也就是响应式数据发生更新,虚拟dom重新渲染之前被触发,你可以在当前阶段进行更改数据,不会造成重渲染。

updated发生在更新完成之后,当前阶段组件Dom已完成更新。要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新。

beforeDestroy发生在实例销毁之前,在当前阶段实例完全可以被使用,我们可以在这时进行善后收尾工作,比如清除计时器,销毁父组件对子组件的重复监听。beforeDestroy(){Bus.$off("saveTheme")}

destroyed发生在实例销毁之后,这个时候只剩下了dom空壳。组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。

四、父组件如何监听子组件的生命周期

  1. 通过$emit
  2. 通过@hook方式
  3.  

     

posted @ 2021-02-02 18:30  我不是小妖精  阅读(157)  评论(0)    收藏  举报