美文网首页
从vue注意事项到vue源码

从vue注意事项到vue源码

作者: 天一呀 | 来源:发表于2019-03-31 18:45 被阅读0次

    这几天重新看vue文档想到了vue源码中的实现,从这些地方去读源码也是一个好办法


    image.png

    Vue.js的响应式原理依赖于Object.defineProperty,vue作者在Vue.js文档中就已经提到过,这也是Vue.js不支持IE8 以及更低版本浏览器的原因。Vue通过设定对象属性的 setter/getter 方法来监听数据的变化,通过getter进行依赖收集,而每个setter方法就是一个观察者,在数据变更的时候通知订阅者更新视图。
    但是我们知道Object.defineProperty主要用于对象的响应式,数组还得另用其它方法。
    如果是修改一个数组的成员,该成员是一个对象,那只需要递归对数组的成员进行双向绑定即可。但这时候出现了一个问题:如果我们进行pop、push等操作的时候,push进去的对象根本没有进行过双向绑定,更别说pop了,那么我们如何监听数组的这些变化呢? Vue.js提供的方法是重写push、pop、shift、unshift、splice、sort、reverse这七个数组方法。修改数组原型方法的代码可以参考observer/array.js以及observer/index.js

    但是修改了数组的原生方法以后我们还是没法像原生数组一样直接通过数组的下标或者设置length来修改数组,可以通过Vue.set以及splice方法

    image.png

    当理解了原因之后再看这些注意事项就会非常的清晰了

    相关文章

      网友评论

          本文标题:从vue注意事项到vue源码

          本文链接:https://www.haomeiwen.com/subject/hzuubqtx.html