鍍金池/ 問答/HTML/ 看React官方文檔的點(diǎn)小疑惑

看React官方文檔的點(diǎn)小疑惑

State and Lifecycle 這一節(jié)里面有兩個地方不太懂

1. State Updates are Merged

The merging is shallow, so this.setState({comments}) leaves this.state.posts intact, but completely replaces this.state.comments.

我的理解是,在多個異步請求都在調(diào)用this.setState()的時候,react會等到最后一個請求返回后,this.setState()才會更新視圖,在此之前的this.setState()做的都是合并this.state這個對象的操作。這個理解有問題么?如果沒問題的話,上面這段引用應(yīng)該如何翻譯?

回答
編輯回答
凝雅

一個例子說明問題:
this.state = {a: 1, b: 2};
當(dāng)你執(zhí)行this.setState({a: 3})的時候,不會影響其b的值。
最終結(jié)果為{a: 3, b: 2}

意思是說,將你setState的這個屬性完全替換掉而不影響其他屬性的值。類似Object.assgin()函數(shù)。

2017年6月30日 03:58
編輯回答
茍活

你可以吧setState變化比喻成操作對象,每次改變 { a: 2, b: 4 } 這個里面值的時候,你用obj.a 或者 obj.b 都不會因?yàn)楦淖兞薿bj.a = 3 從而導(dǎo)致 obj.b = 3.

so 可以說每次setState 時候都是進(jìn)行合并,preState(之前state) 和 currentState(當(dāng)前state) 合并。而且preState和 currentState 里面只有一個值或者多個值不同。

2017年4月30日 02:29
編輯回答
選擇

更新視圖是在一次周期中,而非多個異步請求都返回后,this.setState({comments}) 會把你state中的comments給替換成這個新的comments,也即淺復(fù)制

2018年1月6日 01:46