프론트엔드 정복하기
React에서 여러개의 input state 관리하기(useReducer 이용) 본문
useReducer를 사용하여 여러 개의 인풋 상태를 관리할 수 있다.
기존에는 인풋이 여러 개여서 useState 를 여러번 사용했다.
useReducer를 사용한다면 우리가 기존에 클래스형 컴포넌트에서 input 태그에 name 값을 할당하고 e.target.name 을 참조하여 setState 를 해준 것과 유사한 방식으로 작업을 처리 할 수 있다.
//info.js
import React, { useReducer } from 'react';
function reducer(state, action) {
return {
...state,
[action.name]: action.value
};
}
const Info = () => {
const [state, dispatch] = useReducer(reducer, {
name: '',
nickname: ''
});
const { name, nickname } = state;
const onChange = e => {
dispatch(e.target);
};
return (
<div>
<div>
<input name="name" value={name} onChange={onChange} />
<input name="nickname" value={nickname} onChange={onChange} />
</div>
<div>
<div>
<b>이름:</b> {name}
</div>
<div>
<b>닉네임: </b>
{nickname}
</div>
</div>
</div>
);
};
export default Info;
useReducer에서의 액션은 그 어떤 값이 되어도 된다.
그래서 이번에 우리는 이벤트 객체가 지니고있는 e.target 값 자체를 액션 값으로 사용했다.
이런 식으로 인풋을 관리하면, 아무리 인풋의 개수가 많아져도 코드를 짧고 깔끔하기 유지 할 수 있습니다.
참고사이트
'React > hooks' 카테고리의 다른 글
React hooks로 페이지네이션(pagination) (0) | 2020.08.21 |
---|---|
React hooks 데이터 불러와서 뿌리기 (0) | 2020.08.21 |
React Hooks 완벽 정복하기(도움되는 블로그) (0) | 2020.07.07 |
React에서 아이디, 비밀번호 유효성 검사하기 (0) | 2020.07.03 |
React_useEffect & useState의 활용 (0) | 2020.05.28 |