
📅 2025-10-13
➡️ React State에 대해 새롭게 알게 된 것 또는 헷갈리는 부분 정리 + 🤔❓
useState() 훅을 사용// 배열의 구조분해 할당을 사용
const [value, setValue] = useState(초기값)setState(변경하고 싶은 값)을 사용button 이벤트import React, { useState } from "react";
function App() {
const [animal, setAnimal] = useState("강아지");
function handleClick() {
setAnimal("고양이");
}
return (
<div>
{animal}
<button onClick={handleClick}>바꾸기</button>
</div>
);
}
export default App;import React, { useState } from 'react';
function App() {
const [index, setIndex] = useState(0);
const animal = ['강아지', '고양이', '토끼'];
function handleClick() {
setIndex((index + 1) % animal.length);
}
return (
<div>
{animal[index]}
<button onClick={handleClick}>바꾸기</button>
</div>
);
}
export default App;input과 stateimport React, { useState } from "react";
const App = () => {
const [text, setText] = useState("");
const handleChange = (event) => {
setText(event.target.value);
};
return (
<div>
<input type="text" onChange={handleChange} value={text} />
<p>입력값: {text}</p>
</div>
);
};
export default App;보통 input에서는 사용자가 입력한 값을 state로 관리하는 패턴을 사용
onChange와value를 동시에 쓰는 이유
- React에서
input태그를 다룰 때 보통value와onChange를 같이 연결- 이런 방식을 제어 컴포넌트라고 함
value 속성을 state와 연결하지 않고 onChange만 두거나 아예 이벤트도 쓰지 않고 DOM 자체의 값을 직접 다루는 경우input이 스스로 값을 관리하기 때문에 React의 상태와 완전히 동기화되지 않음import React, { useState } from "react";
function App() {
const [inputValue, setInputValue] = useState("");
const handleChange = (event) => {
setInputValue(event.target.value);
console.log("state 값 : " , inputValue) ;
};
return (
<div>
{/* value를 state와 묶지 않음 */}
<input type="text" onChange={handleChange} />
<p>입력한 값: {inputValue}</p>
</div>
);
}
setState는 비동기이므로, onChange 안에서 바로 console.log(state)를 찍으면 갱신 전 값이 출력될 수 있음
➡️ 지금은 흐름만 이해하자!