Vue响应式原理笔记

120 阅读1分钟
Vue响应式原理笔记

vm身上的一个-data其实就是我们传入进入的data配置对象,data配置对象会被收集到vm的_data里面,然后通过数据代理,挂载到vm上,相当于就是vm._data=data

const vm=new Vue({
    el:'#app',
    data() {
      return {
       name:'xxx',
       address:'北京'
      }
    },
  
  })

image.png

Vue会加工我们传入的data配置对象(加工完成以后就可以做响应式) 对data配置对象进行解析,生成虚拟DOM,渲染页面,如果data配置对象中还有对象,Vue会通过一个递归函数,一直往下找,然后给每个对象里面的数据都添加一个getter和setter方法来检测数据的,直到结束

1.Vue会监视data中所有层次的数据
2.如何监视对象中的数据
    a: 当我们传入data配置对象的时候,Vue会给我们配置对象中的数据添加getter和setter方法,来监视我们data数据的改变
    b: 对象后追加的属性,vue默认不做响应式处理
    c: 如果需要给后来添加的数据做响应式处理需要使用一下方法
        i: Vue.set(target,key,val)
        ii: vn.$set(target,key,val)
3.如何监视数组中的数据
    a: 通过包裹数组更新元素的方法实现,本质做了两件事
        i: 调用原生对应的方法对数组进行更新
        ii: 重新解析模板,更新页面
4.在Vue中修改数组中某个元素一定要用如下的方法
    a: 使用这些API: push()、pop()、shift()、unshift()、splice()、sort()、reverse()
    b: Vue.set() 或则vm.$set()
    
    Vue.set() 和vm.$set()不能给vm或vm的根数据添加属性