state 내 여러 요소가 있다면 다음과 같이 관리할 수 있다.
1) 선언
const [inputs, setInputs]=useState({
nickname : '',
name : ''
});
여기서는 nickname과 name 2가지 요소를 관리한다.
2) 추출
const {name,nickname} = inputs;
inputs 내부의 name과 nickname을 추출하였다.
이제 함수 내부에서 {name}, {nickname}으로 해당 값을 가져올 수 있다.
3) 이벤트 변화
//입력값 출력
const onChange = (e)=>{
const {value,name} = e.target; //타겟의 name과 value 가져오기
console.log(value + " " +name);
setInputs({
...inputs, //state의 inputs 객체 복사
[name]:value //name => value로 변경
});
}
이벤트 변화를 감지하여 value와 name값을 추출한다.
setter를 이용하여 state의 값을 변경한다.
이때 ...inputs를 이용하여 state 객체의 값을 복사하고 (spread 문법)
복사한 객체에서 name 부분만 value로 변경한다.
4) 리셋
//입력값 리셋
const onReset = ()=>{
setInputs({
name:'',
nickname:''
})
}
setter를 이용하여 name과 nickname을 한꺼번에 초기화 시킨다.
5) 리턴
return (
<div className="func">
<input name="name" placeholder="이름" onChange={onChange} value={name} />
<input name="nickname" placeholder="닉네임" onChange={onChange} value={nickname}/>
<div>
<span>이름 : </span>
<span>{name}</span>
<span>닉네임 : </span>
<span>{nickname}</span>
</div>
<button onClick={onReset}>초기화</button>
</div>
);
6) 결과
반응형
'프론트엔드 > React' 카테고리의 다른 글
리액트 useRef(2) 변수관리 (0) | 2022.05.10 |
---|---|
리액트 useRef(1) DOM 선택 (0) | 2022.05.07 |
리액트 함수형 컴포넌트 (0) | 2022.05.05 |
리액트 기초 : Event(2) (0) | 2022.05.04 |
리액트 기초 : Event(1) (0) | 2022.05.03 |
댓글