MyButton이라는 컴포넌트를 생성한 뒤
MyApp이라는 곳에서 컴포넌트를 각각 두개 호출해본다.
MyButton안에는 버튼을 클릭할 때 마다 카운트가 올라가는 변수가 존재한다.
import { useState } from 'react';
export default function MyApp(){
// 같은 컴포넌트를 여러번 렌러링해도 각각 고유의 상태를 갖게 된다. 같은 컴포넌트를 사용하지만 다른 값을 가짐.
return(
<div>
<h1>Counters that update separately</h1>
<MyButton />
<MyButton />
</div>
);
}
// component
function MyButton(){
// useState 로 상태 관리
const [count, setCount] = useState(0);
function handleClick(){
setCount(count + 1);
}
return (
<button onClick={handleClick}>
Clicked {count} times
</button>
)
}
같은 컴포넌트를 호출했지만 상태 값이 각각 다르게 유지되는 것을 발견할 수 있다.

이번에는 버튼이 따로 동작하지 않고 숫자가 동일하게 카운트 되도록 해보자.
export default function MyApp() {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
return (
<div>
<h1>Counters that update separately</h1>
{/* props : 상태를 MyButton으로 각각 전달함. JSX {} 사용하여 값 전달*/}
<MyButton count={count} onClick={handleClick} />
<MyButton count={count} onClick={handleClick} />
</div>
);
}
상태관리 변수인 count 를 MyButton 이 아닌 MyApp에서 관리할 수 있도록 위로 코드를 올려주고,
각 컴포넌트를 호출하는 부분에 count 변수에 해당 변수와 이벤트 핸들러를 작성
이걸 props로 넘겨준다고 표현한다.
각 버튼을 클릭할 경우 onClick이벤트가 실행 -> 이벤트 핸들러 작동
// component
function MyButton({ count, onClick }) {
return <button onClick={onClick}>Click {count} times</button>;
}
MyButton 컴포넌트에서는 다음과 같이 props를 받아온 뒤 값을 각 요소에 꽂아놓고 리턴해주면 된다.

수가 같이 카운트 된다.
🎯참고 자료
Quick Start – React
The library for web and native user interfaces
react.dev
'👨💻 FrontEnd > 🔵 리액트 [React]' 카테고리의 다른 글
React의 setState 업데이트가 꼬일 때, 함수형 업데이트를 써야 하는 이유 (0) | 2025.02.02 |
---|---|
[ react ] 로컬스토리지 활용 : 사용자 아이디 기억하기(remember ID) (0) | 2024.06.05 |
[ React ] 공식문서 읽고 틱택톡 예제 따라해보기 (0) | 2024.05.29 |