๐Ÿ–ฅFrontEnd/React

Custom Hook, Custom Hook ์žฅ์ , ๊ทœ์น™

hellohailie 2022. 7. 27. 16:01

Custom Hook์ด๋ž€?

๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค์Šคํ…€ํ•œ Hook!

์ƒํƒœ ๋ณ€๊ฒฝ ๋“ฑ ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ๋™์ผํ•œ ํ•จ์ˆ˜์—์„œ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์„๋•Œ ์ปค์Šคํ…€ Hook์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

Custom Hook์˜ ์žฅ์ 

1. ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง์˜ ์žฌํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

2. ๋ณด๋‹ค ์ ์€ ์–‘์˜ ์ฝ”๋“œ๋กœ ๋™์ผํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

3. ์ง๊ด€์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ์–ด์„œ ๋ช…๋ฃŒํ•˜๋‹ค. 

 

Custom Hook ๋งŒ๋“ค ๋•Œ ๊ทœ์น™

1. Custom Hook์„ ์ •์˜ํ•  ๋•Œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„ ์•ž์— use๋ฅผ ๋ถ™์ด๊ธฐ

2. Custom Hook์œผ๋กœ ๋งŒ๋“ค ๋•Œ ํ•จ์ˆ˜๋Š” ์กฐ๊ฑด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰ return ํ•˜๋Š” ๊ฐ’์€ ์กฐ๊ฑด๋ถ€์—ฌ์„œ๋Š” ์•ˆ๋œ๋‹ค.

3. ๋Œ€๊ฐœ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ๋‚ด์˜ hooks ๋””๋ ‰ํ† ๋ฆฌ์— Custom Hook์„ ์œ„์น˜ ์‹œํ‚จ๋‹ค.

 

์ฃผ์˜ํ•  ์ 

Custom Hook์„ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋‘ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ฐ™์€ state๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๊ทธ์ € ๋กœ์ง๋งŒ ๊ณต์œ ํ•  ๋ฟ, state๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ •์˜ ๋˜์–ด ์žˆ๋‹ค.

 

Custom Hook ์˜ˆ์‹œ

 

1. ์—ฌ๋Ÿฌ url์„ fetchํ•  ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” Hook

const useFetch = ( initialUrl:string ) => {
	const [url, setUrl] = useState(initialUrl);
	const [value, setValue] = useState('');

	const fetchData = () => axios.get(url).then(({data}) => setValue(data));	

	useEffect(() => {
		fetchData();
	},[url]);

	return [value];
};

export default useFetch;

 

2. ์—ฌ๋Ÿฌ input์— ์˜ํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ํ•  ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” Hooks

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;

 

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“