[英]get react component with state props to rerender upon state change
[英]React rerender props change vs local state change
為什么組件 Demo 不會在計數器更改時重新呈現? 我知道props.children與以前的相同,但是本地 state 發生了變化,因此應該重新渲染。 更改本地 state 是否以某種方式優化以檢測是否應該重新渲染Top 組件的某些部分?
在第二個示例中它會重新渲染,這些示例之間有什么區別?
在示例中,您可以單擊按鈕並在控制台中查看 Demo 是否重新渲染。
在第一種情況下,您將傳遞作為props
一部分的children
項,並且基本上在每次重新渲染Top
組件時,都會返回相同的children
項引用,因此 React 會檢測到這一點並且不會重新渲染Demo
組件。
在第二種情況下,React 將在內部再次執行React.createElement(...)
以創建Demo
組件,這是一個新的引用。
這是一個很好的方式來記住這一點: -
如果 React 組件在其渲染 output 中返回與上次完全相同的元素引用,React 將跳過重新渲染該特定子元素
這是因為將children
參數傳遞給Top
組件是在傳遞對這個 object 的引用。 React 可以檢測到與以前的版本相比沒有任何變化,因此它不會重新渲染它。
當您在Top
組件中使用名稱<Demo />
渲染組件時,您每次都在渲染新版本的Demo
組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.