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

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

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

但是react就要使用:

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

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

阅读 4.5k
5 个回答

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

不用object.assign也可以啊

新手上路,请多包涵

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题