2017-01-03 18 views
1

我正在閱讀Facebook tutorial for React。直接Object.assign爲什麼以及如何提高React中的應用程序性能?

最終的結果是相同的,但通過不突變(或​​更改基礎數據),我們現在:約40%的通過方式,有一個名爲Why Immutability is Important他們的狀態(關於不變性的重要性)部分有一個額外的好處,可以幫助我們提高組件和整體應用程序性能

我的問題是:爲什麼/如何?也就是說,在React中,具體是爲什麼/不變性(使用Object.assign(...)等)「有助於提高...整體應用程序性能」?

+0

標題爲** Tracking Changes **的小節似乎很好地解釋了IMO - 它還不清楚,還是您要求更詳細的技術解釋? – UnholySheep

回答

5

我覺得這是更容易arrays理解:

假設你有一個array,包含許多,許多條目。 您將一個條目替換爲另一個條目 - 查看是否有任何更改react必須遍歷整個array

現在,假設每次你做出一些改變你創建新的array - 那麼唯一react所要做的就是比較references

Object.assign做相同的 - 而不是改變現有object,您創建一個新的,因此react可以簡單地通過比較引用來檢測更改

0

在React中,狀態更改不必依賴於對象內單個值更改的差異,只需知道如果stat e完全改變了

對於非原始數據類型等數組和對象,就可以通過檢查,看他們是否參考相同的結構檢查是否相等。

使用Object.assign或傳播語法創建一個對象的新副本,因此創建一個新的引用。由於副本現在指向新的引用,因此可以通過執行引用相等性檢查來推斷更改結構的意圖。

買者: - 既然平等是由參考檢查而不是價值,陣營將把與Object.assign更新,即使有以嵌套值沒有變化更新的狀態。