React - useDidMount custom hook
useDidMount hook ์์ฑํ๊ธฐ
React์ classํ ์ปดํฌ๋ํธ์์๋ componentDidMount
๋ผ๋ ๋ฉ์๋๊ฐ ์กด์ฌํ๋ค.
๋ฆฌ์กํธ 16.8๋ฒ์ ์ดํ hook์ด ๋์
๋์์ง๋ง componentDidMount
์ ๊ทธ๋๋ง ์ ์ฌํ hook์ useEffect
๊ฐ ์ ์ผํ๋ค.
๋ด ์๊ฐ์ผ๋ก๋ hook์ ๋์ ํ ์ดํ custom hook์ ์ด์ฉํ ๊ธฐ๋ฅ๋ค์ ๊ตฌํ์ด ๊ฐ๋ฅํด์ก๊ธฐ ๋๋ฌธ์ ๊ทธ ํ์์ฑ์ ๋๋ผ์ง ๋ชปํด ์๋ก์ด hook์ ๋ง๋ค์ง๋ ์์ ๊ฒ์ผ๋ก ์ถ์ ํ๋ค.
๊ทธ๋ผ ์ง์ ํ๋ฒ ๊ตฌํํด๋ณด์.
useDidMount ๋ง๋ค๊ธฐ
๋ฆฌ์กํธ์ componentDidMount
์ ๋ํ ์ค๋ช
์ ๋ค์๊ฐ์ด ๋์ด์๋ค.
componentDidMount()
๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ์งํ, ์ฆ ํธ๋ฆฌ์ ์ฝ์ ๋ ์งํ์ ํธ์ถ๋ฉ๋๋ค. DOM ๋ ธ๋๊ฐ ์์ด์ผ ํ๋ ์ด๊ธฐํ ์์ ์ ์ด ๋ฉ์๋์์ ์ด๋ฃจ์ด ์ง๋ฉด ๋ฉ๋๋ค.
์ด๊ธฐ ๋ ๋๋ง์ธ์ง๋ฅผ boolean
๊ฐ์ผ๋ก ์๋ ค์ฃผ๋ฉด if๋ฌธ์ ์กฐ๊ฑด์ผ๋ก ๋ฃ์ด์ true
์ผ๋๋ง ์ฝ๋ ๋ธ๋ก์ ์คํ ์ํค๋ฉด componentDidMount
์ ๋๊ฐ์ธ ๋์์ ํ ์ ์์ ๊ฒ์ด๋ค.
useDidMount
import { useRef, useEffect } from 'react';
const useDidMount = () => {
const didMountRef = useRef(false);
useEffect(() => {
didMountRef.current = true;
}, []);
return didMountRef.current;
};
export default useDidMount;
์ด๊ธฐ ๋ ๋๋ง์ useEffect
๊ฐ ์คํ๋๋ฉด์ useDidMount
๋ true
๊ฐ์ ๋ฆฌํดํ๋ค.
useState ๋์ useRef๋ฅผ ์ฌ์ฉํ ์ด์
๊ทธ ์ด์ ๋ useState
๋ก useRef
๋ฅผ ๋์ฒดํ ํ console.log
๋ฅผ ํ๋ ์ฐ์ด๋ณด๋ฉด ๋ฐ๋ก ์ดํดํ ์ ์๋ค.
useState
๋ DOM์ ์
๋ฐ์ดํธ ํ๊ธฐ ๋๋ฌธ์ console.log
๊ฐ ๋ ๋ฒ์ฐํ ๊ฒ์ด๋ค.
์ด๋ ๋ถํ์ํ ์ํฉ์ด๋ฏ๋ก useRef
๋ฅผ ์ฌ์ฉํ์๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(React - useDidMount custom hook), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@pest95/React-useDidMount-custom-hook์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค