Tiny Bunny
본문 바로가기
JavaScript/React

React - 부모, 자식 관계

by 내이름효주 2024. 3. 28.
console.clear();

import React, { useState } from "https://cdn.skypack.dev/react@18";
import ReactDOM from "https://cdn.skypack.dev/react-dom@18";
let AppCallCount = 0;
let SubCallCount = 0;

const Sub = () => {
	SubCallCount++;
	console.log(`Sub ${SubCallCount}번 실행됨`);

	const [no, setNo] = useState(0);

	return (
		<>
			<button onClick={() => setNo(no + 1)}>Sub 버튼 : {no}</button>
		</>
	);
};

const App = () => {
	AppCallCount++;
	console.log(`App ${AppCallCount}번 실행됨`);

	const [no, setNo] = useState(0);

	return (
		<>
			<div style={{ border: "5px solid red", padding: 10 }}>
				<Sub />
				<hr />
				<button onClick={() => setNo(no + 1)}>App 버튼 : {no}</button>
			</div>
		</>
	);
};

ReactDOM.render(<App />, document.getElementById("root"));
  • App 안에 Sub가 있는 구조 Sub이 App의 자식이라고 보면 된다
  • 특징) 자식 안에서 리랜더링되면 부모 컴포넌트에 영향을 안주는데 부모가 리랜더링되면 자식에게도 영향을 준다!
  • 그래서 위에 코드처럼 실행하면
    • App 버튼 클릭 시에는 console.log(`App ${AppCallCount}번 실행됨`),console.log(`Sub ${SubCallCount}번 실행됨`) 이 모두 실행되고 
    • Sub 버튼 클릭 시에는 console.log(`Sub ${SubCallCount}번 실행됨`)만 실행되는거지~