<form> 태그를 사용하며, 내부에 <input> 같은 입력 필드나 <button> 같은 버튼이 포함 된다.<form>
<label>
이름:
<input type="text" name="name" />
</label>
<button type="submit">제출</button>
</form>
React에서 제어 컴포넌트를 구현하는 코드:
function NameForm(props) {
const [value, setValue] = useState(''); // 입력 값을 저장하는 state
const handleChange = (event) => {
setValue(event.target.value); // 입력 값이 변경되면 state 업데이트
};
const handleSubmit = (event) => {
alert('입력한 이름: ' + value); // 제출 시 입력 값을 알림으로 표시
event.preventDefault(); // 기본 폼 제출 동작 막기
};
return (
<form onSubmit={handleSubmit}>
<label>
이름:
<input type="text" value={value} onChange={handleChange} />
</label>
<button type"submit">제출</button>
</form>
);
}
const [value, setValue] = useState('')는 입력 데이터를 저장할 state를 선언한다. 초기값은 빈 문자열 ''이다.<input> 태그의 onChange={handleChange}를 통해 사용자가 입력값을 변경할 때마다 handleChange 함수가 실행된다.<input> 태그에 value={value}를 추가하여 state의 값을 입력 필드의 값으로 동기화한다. 이로 인해 입력 필드는 state를 기준으로 값을 가지게 된다.입력된 값을 모두 대문자로 변환하고 싶다면, handleChange 함수에 변환 로직을 추가할 수 있다.
코드:
const handleChange = (event) => {
setValue(event.target.value.toUpperCase()); // 입력 값을 대문자로 변환한 후 state 업데이트
};