5000 제품의 이름과 가격을 렌더링하는 간단한 반응 앱이 있습니다. 가격은 편집 가능하며 가격은 주에 반영됩니다.한 항목이 변경되면 React가 전체 목록을 다시 렌더링합니다.
https://github.com/TonyCaffer/thinking-in-react-1
App.js은 상태를 관리하고 나는 불변-헬퍼를 사용하고 ProductTable에 각 ProductRow
아래로 전달되는 onChangePrice 기능을 통해 가격 변화를 처리 나는 특별히 변경된 제품에 대한 상태 레코드 만 변경합니다.
그러나 React가 모든 제품을 다시 렌더링하기 때문에 각 변경마다 눈에 띄는 1 초 지연이 있습니다. 각 제품에는 React가 필요한 구성 요소 만 다시 렌더링하는 데 도움이 될 것으로 생각되는 핵심 속성이 있습니다.
프로덕션 빌드에서는 덜 지연되지만 모든 제품이 다시 렌더링되므로 이는 해결해야 할 근본적인 문제입니다.
왜 모든 제품 구성 요소가 다시 렌더링됩니까? 그것은 this.state.products를 상위 레벨의 ProductTable을 통과시켜 목록의 전체 다시 그리기를 트리거하기 때문입니까? 그렇다면 상태가 목록에있을 때 각 ProductRow가 자체 레코드의 상태를 어떻게 관리 할 수 있습니까?
다시 렌더링을 중단하지 않습니다. 그것들은 '이전에 호출되었던 동일한 컴포넌트를 호출 할 것이고,'componentWillMount' 대신에'componentWillUpdate'를 호출 할 것입니다. 렌더링을 멈추려면 shouldComponentUpdate를 사용하여 재 렌더링을 중지하십시오. –