: 컴포넌트의 동적인 값 (동적인 데이터를 다룰 때 사용됨)
: 계속해서 변화하는 특정 상태. 상태에 따라 각각 다른 동작을 함
import React from "react";
import "./App.css";
import Counter from "./Counter"; // Counter 컴포넌트 받아오기
import MyHeader from "./MyHeader";
function App() {
return (
<div>
<MyHeader />
<Counter /> // Counter 컴포넌트 사용
</div>
);
}
export default App;
(0) 기본 화면 그리기
// Counter.js
const Counter = () => {
return (
<div>
<h2>0</h2> // 동적으로 상태가 변화해야하는 요소 -> state 사용
<button>+</button>
<button>-</button>
</div>
);
};
export default Counter; // Counter 컴포넌트를 내보내서 App.js에서 사용하기
(1) state 설정
import React, { useState } from "react"; // state는 react의 기능이기 때문에 react에서 react, {useStaate} 메소드를 임포트 해줘야함
const Counter = () => {
const [count, setCount] = useState(0);
return (
<div>
<h2>{count}</h2>
<button>+</button>
<button>-</button>
</div>
);
};
export default Counter;
idx 0 = count, idx 1 = setCount 상수로 받아옴(2) setState 함수 설정
import React, { useState } from "react"; // state는 react의 기능이기 때문에 react에서 react, {useStaate} 메소드를 임포트 해줘야함
const Counter = () => {
const [count, setCount] = useState(10);
// state를 변화시키는 함수 정의
const onIncrease = () => {
setCount(count + 1); // 원래 state를 받아서 변화시킨 후 setState로 넘김
};
const ondecrease = () => {
setCount(count - 1);
};
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
{/* JSX에서는 {}를 통해 onClick함수 걸어줌 */}
<button onClick={ondecrease}>-</button>
</div>
);
};
export default Counter;
// Counter.js
import React, { useState } from "react"; // state는 react의 기능이기 때문에 react에서 react, {useStaate} 메소드를 임포트 해줘야함
const Counter = () => {
console.log("호출됨");
const [count, setCount] = useState(10);
// state를 변화시키는 함수 정의
const onIncrease = () => {
setCount(count + 1); // 원래 state를 받아서 변화시킨 후 setState로 넘김
};
const ondecrease = () => {
setCount(count - 1);
};
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
{/* JSX에서는 {}를 통해 onClick함수 걸어줌 */}
<button onClick={ondecrease}>-</button>
</div>
);
};
export default Counter;
// App.js
import React from "react";
import "./App.css";
import Counter from "./Counter";
import MyHeader from "./MyHeader";
function App() {
console.log("앱 호출");
return (
<div>
<MyHeader />
<Counter />
</div>
);
}
export default App;

근데 왜 두 번씩 호출이 될까..?ㅠ
Counter 컴포넌트는 State를 두 개 이상 가질 수 있음
import React, { useState } from "react"; // state는 react의 기능이기 때문에 react에서 react, {useStaate} 메소드를 임포트 해줘야함
const Counter = () => {
console.log("호출됨");
const [count, setCount] = useState(10);
// state를 변화시키는 함수 정의
const onIncrease = () => {
setCount(count + 1); // 원래 state를 받아서 변화시킨 후 setState로 넘김
};
const ondecrease = () => {
setCount(count - 1);
};
// 두 번째 State
const [count2, setCount2] = useState(100);
const onInc2 = () => {
setCount2(count2 + 10);
};
const onDec2 = () => {
setCount2(count2 - 10);
};
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
<button onClick={ondecrease}>-</button>
<br />
<h2>{count2}</h2>
<button onClick={onInc2}>+ 10</button>
<button onClick={onDec2}>- 10</button>
</div>
);
};
export default Counter;
