๐ customHook
์ฐธ๊ณ ์ฃผ์
https://react.vlpt.us/basic/21-custom-hook.html
โ๏ธ ์ปค์คํ ํ
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๋ค๋ณด๋ฉด, ๋ฐ๋ณต๋๋ ๋ก์ง์ด ์์ฃผ ๋ฐ์๊ธฐ๋๋ฌธ์ ์ด๋ฌํ ๋ก์ง๋ค์ ๊ณตํต์ผ๋ก ์ฌ์ฉ ํ ์ ์๊ฒ hook์ผ๋ก ๋ง๋ค์ด์ค๋ค.
์ปค์คํ Hooks ๋ฅผ ๋ง๋ค ๋์๋ ๋ณดํต ์ด๋ ๊ฒ use ๋ผ๋ ํค์๋๋ก ์์ํ๋ ํ์ผ์ ๋ง๋ค๊ณ ๊ทธ ์์ ํจ์๋ฅผ ์์ฑํจ
์ปค์คํ Hooks ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ทธ ์์์ useState, useEffect, useReducer, useCallback ๋ฑ Hooks ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ฃผ๊ณ , ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฐ๋ค์ ๋ฐํํด์ฃผ๋ฉด ๋๋ค~
์๋ฅผ ๋ค์ด input์ ๊ด๋ฆฌํ๋ ํ ์ ๋ง๋ค๋ฉด
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { useState, useCallback } from "react";
function useInputs(initialForm) {
const [form, setForm] = useState(initialForm);
// change
const onChange = useCallback((e) => {
const { name, value } = e.target;
setForm((form) => ({ ...form, [name]: value }));
}, []);
const reset = useCallback(() => setForm(initialForm), [initialForm]);
return [form, onChange, reset];
}
export default useInputs;
์ด๋ ๊ฒ ๋ง๋ค์ด์ฃผ๊ณ ๋ค๊ณ ๊ฐ์ ์ฐ๋ฉด๋๋ค.
์ฃผ์ ํ ์ ์ customHook๋ Hook์ด๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ์ ์ต์์ ์ค์ฝํ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. useState, useEffect, useReducer, useCallback ์ฒ๋ผ