为什么 vue 可以直接对 data 进行赋值, 但是react不能够修改state的变量?

walter_wally
  • 46

对于复杂的数据类型,比如说数组或者对象,
在Vue之中可以使用:

data() {
    return {
        obj: dataObject
    }
}
method: {
    modify: function(newObj) {
        this.obj = newObj
    }
}

但是react就要使用:

this.setState({
    obj: Object.asign({}, oldObj, newObj)
})

Vue可以直接修改对象的引用,但是react不能够直接修改,而是要使用Object.asign的方式,请问底层的原因是什么?为什么这样呢?

回复
阅读 3.4k
5 个回答
✓ 已被采纳

react分Component和PureComponent Component不用assign也可以 PureComponent不行 因为在shouldComponentUpdate做了浅比较 vue用了getter setter react没有

不用object.assign也可以啊

shawnXian
  • 4
新手上路,请多包涵

状态管理库mobx借鉴了vue的处理方式,所以看mobx能解决你的部分疑惑

react的diff算法主要是要比较前后状态的差异来更新,如果直接修改可能导致比较不出结果

vue的数据双向绑定,而react的数据是向下传递的

宣传栏