在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 為什么 vue 可以直接對 data 進行賦值, 但是react不能夠修改sta

為什么 vue 可以直接對 data 進行賦值, 但是react不能夠修改state的變量?

對于復(fù)雜的數(shù)據(jù)類型,比如說數(shù)組或者對象,
在Vue之中可以使用:

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

但是react就要使用:

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

Vue可以直接修改對象的引用,但是react不能夠直接修改,而是要使用Object.asign的方式,請問底層的原因是什么?為什么這樣呢?

回答
編輯回答
墨沫

react分Component和PureComponent Component不用assign也可以 PureComponent不行 因為在shouldComponentUpdate做了淺比較 vue用了getter setter react沒有

2017年6月7日 20:36
編輯回答
呆萌傻

react的diff算法主要是要比較前后狀態(tài)的差異來更新,如果直接修改可能導(dǎo)致比較不出結(jié)果

2017年2月7日 23:14
編輯回答
心夠野

vue的數(shù)據(jù)雙向綁定,而react的數(shù)據(jù)是向下傳遞的

2017年12月7日 13:14
編輯回答
妖妖

不用object.assign也可以啊

2017年5月8日 18:56
編輯回答
小眼睛

狀態(tài)管理庫mobx借鑒了vue的處理方式,所以看mobx能解決你的部分疑惑

2017年5月26日 23:52