지금까지는 하나의 컴포넌트에서 하나의 입력만을 다뤘는데, 만약 하나의 컴포넌트에서 여러 개의 입력을 다루기 위해서는 어떻게 해야할까요? 이런 경우에는 여러 개의 state
를 선언해서 각각의 입력에 대해 사용하면 됩니다. 아래 예시 코드를 한 번 보도록 하겠습니다.
function Reservation(props) {
const [haveBreakfast, setHaveBreakfast] = useState(true);
const [numberOfGuest, setNumberOfGuest] = useState(2);
const handleSubmit = (event) => {
alert(`아침식사 여부: ${haveBreakfast}, 방문객 수: ${numberOfGuest}`);
event.preventDefault();
}
return (
<form onSubmit={handleSubmit}>
<label>
아침식사 여부:
<input
type="checkbox"
checked={haveBreakfast}
onChange={(event) => {
setHaveBreakfast(event.target.checked);
}} />
</label>
<br />
<label>
방문객 수:
<input
type="number"
value={numberOfGuest}
onChange={(event) => {
setNumberOfGuest(event.target.value);
}} />
</label>
<button type="submit">제출</button>
</form>
);
}
위 코드는 Reservation
이라는 이름을 가진 호텔예약을 위한 컴포넌트인데, 예약을 하기 위해 필요한 정보 두 가지를 입력받도록 되어 있습니다. 하나는 아침식사 여부이고, 다른 하나는 방문객 수 입니다. 아침식사 여부를 입력받기 위한 <input>
태그는 type
이 checkbox
로 되어 있고, 값이 변경되면 setHaveBreakfast()
함수를 통해 값을 업데이트 합니다. 그리고 방문객 수를 입력받기 위한 <input>
태그는 type
이 number
로 되어 있고, 값이 변경되면 setNumberOfGuest()
함수를 통해 값을 업데이트 합니다.
클래스 컴포넌트에서는 setState()
함수 하나로 모든 state
의 값들을 업데이트 했지만, 함수 컴포넌트에서는 각 state
의 변수마다 set
함수가 따로 존재하기 때문에 위와 같은 형태로 각각의 set
함수를 사용해서 구현하면 됩니다.
마지막 업데이트: 2025년 08월 21일 09시 05분
이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.
On this page