👾 Parent.js
const [isShow, setIsShow] = useState(false);
const clickHandler = ()=>{
// toggle
setIsShow( prev => !prev );
}
return(
// isShow가 아닌 false로 값을 고정시킴!!!
<Child show={false}/>
<button onclick={clickHandler}>toggle Btn</button>
);
👾 Child.js
const Child = (props)=>{
return(
{props.show && <p>show!!</p>}
);
}
👉🏻 토글 버튼을 클릭하면 isShow state의 값은 변경되어 Parent컴포넌트는 재평가가 됨! 이때 Child컴포넌트도 재평가가 되는데 이유는 state값이 변경되어서가 아니라 Parent컴포넌트가 재평가 되면서 jsx를 return하기 때문에 Child컴포넌트도 재평가가 되는것이다!! 이때 DOM은 렌더링 되지 않음!!!
🔥 컴포넌트의 재평가는 DOM을 다시 렌더링 하는 것이 아님!
리액트는 컴포넌트만 신경을 쓰며, 이전 가상 DOM과 현재 가상 DOM을 비교하여 변경된 사항만 리액트 DOM에게 알린다. 변경된 사항을 리액트 DOM이 실제 DOM을 업데이트 함.
[참고] Udemy - React 완벽 가이드 with Redux, Next.js, TypeScript