리액트 폼 제어
폼
전반적으로 <input type="text">
, <textarea>
및 <select>
모두 매우 비슷하게 동작합니다. 모두 제어 컴포넌트를 구현하는데 value
어트리뷰트를 허용합니다.
주의
select
태그에 multiple 옵션을 허용한다면value
어트리뷰트에 배열을 전달할 수 있습니다.<select multiple={true} value={['B', 'C']}>
다중 입력 제어하기
여러 input
엘리먼트를 제어해야할 때, 각 엘리먼트에 name
어트리뷰트를 추가하고 event.target.name
값을 통해 핸들러가 어떤 작업을 할 지 선택할 수 있게 해줍니다.
아래는 예시입니다.
class Reservation extends React.Component {
constructor(props) {
super(props);
this.state = {
isGoing: true,
numberOfGuests: 2
};
this.handleInputChange = this.handleInputChange.bind(this);
}
handleInputChange(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value });
}
render() {
return (
<form>
<label>
Is going:
<input
name="isGoing"
type="checkbox"
checked={this.state.isGoing}
onChange={this.handleInputChange} />
</label>
<br />
<label>
Number of guests:
<input
name="numberOfGuests"
type="number"
value={this.state.numberOfGuests}
onChange={this.handleInputChange} />
</label>
</form>
);
}
}
주어진 input 태그의 name에 일치하는 state를 업데이트하기 위해 ES6의 computed property name 구문을 사용하고 있습니다.
this.setState({
[name]: value});
ES5 코드는 아래와 같습니다.
var partialState = {};
partialState[name] = value;
this.setState(partialState);
또한, setState()
는 자동적으로 현재 state에 일부 state를 병합하기 때문에 바뀐 부분에 대해서만 호출하면 됩니다.
Author And Source
이 문제에 관하여(리액트 폼 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hqillz/리액트-폼-제어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)