리액트는 어떻게 동작할까?
Reconciliation(재조정) 과정
// container 엘리먼트에 button 엘리먼트 렌더
// let domNode = document.createElement('button');
// domNode.className = 'blue';
// domContainer.appendChild(domNode);
ReactDOM.render(
<button className="blue" />,
document.getElementById("container")
);
// 변경할 엘리먼트의 타입이 같아서(button → button) 호스트 객체를 다시 사용할 수 있으므로 수정된 클래스 네임만 변경
// domNode.className = 'red';
ReactDOM.render(
<button className="red" />,
document.getElementById("container")
);
// 변경할 엘리먼트의 타입이 달라서(button → p) 호스트 객체를 다시 사용할 수 없으므로 새롭게 엘리먼트 렌더
// domContainer.removeChild(domNode);
// domNode = document.createElement('p');
// domNode.textContent = 'Hello';
// domContainer.appendChild(domNode);
ReactDOM.render(<p>Hello</p>, document.getElementById("container"));
// 변경할 엘리먼트의 타입이 같아서(p → p) 호스트 객체를 다시 사용할 수 있으므로 textContent만 변경
// domNode.textContent = 'Goodbye';
ReactDOM.render(<p>Goodbye</p>, document.getElementById("container"));Lists
Reference
Last updated