๋ชฉ์ฐจ
- Introduction
- custom hook
- Conclusion
๐ Introduction
์๋ ํ์ธ์. ์ค๋์ custom hook์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. custom hook์ ์์ฃผ ์ฌ์ฉ๋๋ react hooks๋ฅผ ๋ฌถ์ด์ dryํจ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ์ด ๋ฉ๋๋ค. ๊ทธ๋ผ ํ๋ฒ ์์๋ณผ๊น์?
๐ custom hook
import { useReducer, useCallback } from "react";
const CHANGE_FORM = "CHANGE_FORM";
const RESET_FORM = "RESET_FORM";
function reducer(state, action) {
switch (action.type) {
case CHANGE_FORM:
return {
...state,
[action.name]: action.value,
};
case RESET_FORM:
return {
...action.initialForm,
};
default:
return state;
}
}
function useInputs(initialForm) {
const [form, dispatch] = useReducer(reducer, initialForm);
const onChange = useCallback((e) => {
const { name, value } = e.target;
dispatch({ type: CHANGE_FORM, name, value });
}, []);
const reset = useCallback(() => dispatch({ type: RESET_FORM, initialForm }), [
initialForm,
]);
return [form, onChange, reset];
}
export default useInputs;
์ด๋ ๊ฒ ์์ฃผ ์ฌ์ฉ๋๋ inputs์ ๋ํด์ custom hooks๋ฅผ ๋ง๋ค์ด ์ค์ ์์ต๋๋ค.
์ด์ useInputs๋ ์ด๋ ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
const [form, onChange, reset] = useInputs({
username: "",
email: "",
});
custom hooks๋ฅผ ์ฌ์ฉํ ๋๋ ์์ use๋ฅผ ๋ถ์ฌ hooks์ธ ๊ฒ์ ์๋ ค์ค๋๋ค.
๐ Conclusion
์ด๋ ๊ฒ ์ค๋ custom hook์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์์ต๋๋ค. ์ vue3์์ hook์ ์๊ฐ์ ๋ง์ด ๋ฐ์๋ค๊ณ ํ๋์ง ์๊ฒ ๋ค์. ์ข๋ dryํ๊ฒ ์ฝ๋๋ฅผ ์ ์ง๋ฅผ ํ ์ ์๋ ์ฅ์ ์ด ๋๋ฌด ํฌ๊ฒ ๋ค๊ฐ์ค๋ค์. ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ด์ ์๋ ~
'React Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React - context api (0) | 2020.12.15 |
---|---|
React - useReducer (0) | 2020.12.13 |
React - React.memo (0) | 2020.12.07 |
React - useCallback (0) | 2020.12.07 |
React - useMemo (0) | 2020.12.06 |