useReducer를 활용하여 작성한 로직을 hook으로 커스텀하여 info컴포넌트에서 사용하기
//useInputs.js
import { useReducer } from "react";
function reducer(state, action) {
return {
...state,
[action.name]: action.value,
};
}
export default function useInputs(initialForm) {
const [state, dispatch] = useReducer(reducer, initialForm);
const onChange = (e) => {
dispatch(e.target);
};
return [state, onChange];
}
//info.js
import React from "react";
import useInputs from "./useInputs";
const Info = () => {
const [state, onChange] = useInputs({
name: "",
nickname: "",
});
const { name, nickname } = state;
return (
<>
<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>
</>
);
};
export default Info;
'프론트엔드관련 책예제실습정리 > 리기술요약' 카테고리의 다른 글
09컴퍼넌트스타일링 node-modules에서 라이브러리 불러오기(open-color, include-media) (0) | 2021.06.22 |
---|---|
09컴퍼넌트스타일링 scss @import로 공통 믹스인 분리하기 (0) | 2021.06.22 |
08hooks/useMemo,useCallback,useRef (0) | 2021.06.22 |
컴포넌트 반복 (0) | 2021.06.11 |
ref:DOM에 이름달기 (0) | 2021.06.11 |