2016-10-11 38 views
0

我瞭解到反應使用鍵識別一個元素(組件)。反應如何唯一識別組件?

以下哪項反應考慮識別元素? 還有別的嗎?

  • 關鍵
  • 元素類型
  • ,其中元件位於整個樹

回答

0

你是一切正確,你已經表示。您可以通過檢查反應應用程序的元素並查看組件來驗證它。例如,你會看到數據reactroot,數據reactid的div

您可能還需要檢查出https://github.com/facebook/react-devtools

+0

'data-reactid'屬性實際上從React v15開始就沒有了。 – tobiasandersen

0

你是正確的,陣營使用密鑰識別實例(組件)。雖然這不是真正的性能,但是鍵被用來確定哪些實例可以被重用(因此也導致更好的性能)。如果密鑰一直在改變,React將不必要地重新創建節點,並且子組件將失去它們的狀態。

React應用程序的每個級別都有一個鍵。使用JSX時,可以使用以下方式明確指定密鑰:<Button key={id} />。如果沒有提供鍵屬性,則React將使用組件的索引(在當前級別中)向組件隱式添加鍵屬性。

那麼,爲什麼你不總是讓React爲你做這件事?對於在this.state中維護數據的組件,如果兄弟(同一級別)被刪除或重新排序,情況會變得很奇怪。您可以在React文檔中輸入read more about this