Vue最大的特点就是它的数据响应式了。
我们之前称之为双向数据绑定,现在不这样叫了,是因为他已经不是双向数据绑定了。
Vue改过很多版,忘记其中那一版本将双向数据绑定用单向数据流模拟。
所以现在被称作数据响应式。
数据响应式最大的好处就是只要数据发生变动,UI就会随之渲染,对开发者来说特别的方便。
那么它其中的原理是什么样子的?
原理
- 他是使用了Object.defineProperty()这个方法。
- 还是用了 get/set 监听数据变动,从而改变数据。
- 只要数据变动就会重新render(),达到重新渲染UI的作用。
变异方法
我们知道Vue是数据响应式的,接下来我们想想,是不是所有的数据都是响应式的?
比如一个数组,我们通过改变数组中的元素,UI会跟着变化么?
var vm = new Vue({
data () {
return {
items: ['1', '2', '3']
}
}
})
vm.items[4] = '4' // 发现页面并没有变化
vm.items.push(4) // 发现UI重新渲染了
为什么会这样??是因为Vue中的数组变异属性提供的能力。
Vue中有七个数组的变异属性,这些变异属性是Vue对JS的重新封装,给予了这些属性重新渲染UI界面的能力。也就是通过Object.defineProperty()中的get/set方法。
这七个属性如下:
- push()
- pop()
- shift()
- unshift()
- splice()
- sort()
- reverse()
以上的七个属性,就是Vue的变异属性,他们会重新渲染UI。
总结:
- Vue数据响应式的原理。
- 变异属性