๋ฆฌ์กํธ๋ฅผ ์ข ๊ณต๋ถํ๋ค ๋ณด๋ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ์ ๋ํด์๋ ์์๋ด์ผ ํ ๊ฒ ๊ฐ์์ ์ ๋ฆฌํด๋ณธ๋ค.
์ฐ์ ์ด ์๋ช ์ฃผ๊ธฐ๋ผ๋๊ฒ, ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ํ๋์ ์ ๋ฐ์ดํธ๋๊ณ ์ฌ๋ผ์ง ๋๊น์ง์ ์ฃผ๊ธฐ๋ฅผ ๋งํ๋ค.
์ด ์ฃผ๊ธฐ์ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค ์ธ ๊ฐ์ง๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ด ๋ฉ์๋๋ค์ useEffect ํ ๊ณผ ๋น๊ตํด์ ์ดํด๋ณด๋ ค ํ๋ค.
- componentDidMount()
- componentDidUpdate()
- componentWillUnmount()
mount ??
๋จผ์ ๋ง์ดํธ(mount)๋ผ๋ ์ฉ์ด๊ฐ ๋ฌด์์ธ์ง๋ฅผ ์์์ผ๊ฒ ๋ค.
๋ง์ดํธ์ ์ธ๋ง์ดํธ๊ฐ ์๋๋ฐ, ๋ง์ดํธ๋ ์ฌ์ ์ ์ธ ์๋ฏธ๋ก๋ '์์ํ๋ค'๋ผ๋ ๋ป์ด์ง๋ง-
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์์ ๋ง์ดํธ๋ DOM ํธ๋ฆฌ๊ฐ ์์ฑ๋๊ณ ์น๋ธ๋ผ์ฐ์ ์ ๋ํ๋ ๋๋ฅผ ๋งํ๋ค.
๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ๋งํ ์ ์๊ฒ ๋ค.
- ๋ง์ดํธ(mount) : ์ปดํฌ๋ํธ๊ฐ ์ต์ด๋ก ๋ ๋ ๋ ๋์ ๊ณผ์
- ์ธ๋ง์ดํธ(unmount) : ์ปดํฌ๋ํธ๊ฐ ์ญ์ ๋ ๋์ ๊ณผ์
componentDidMount()
์ด ๋ฉ์๋๋ ์ปดํฌ๋ํธ๊ฐ ํ๊ฐ๋๊ณ DOM์ ๋ ๋๋ง ๋ ๋, ์ฆ ๋ง์ดํธ ๋ ์งํ์ ํธ์ถ๋๋ค.
useEffect(() => {
setFilteredUsers(DUMMY_USERS.filter((user) => user.name.includes(searchTerm)));
}, []);
ํ
๊ณผ ๋น๊ตํ์๋ฉด, ์์กด์ฑ ๋ฐฐ์ด์ด ๋น์ด์๋ useEffect ํ
๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค๊ณ ํ ์ ์๋ค.
๋ชจ๋ effect ํจ์๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ ๋๋ง ๋๋ - ๋ง์ดํธ ๋ ๋ ์คํ๋๊ณ , ์์กด์ฑ ๋ฐฐ์ด์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด ์ฒ์ ์คํ๋ ์ดํ๋ก ๋ค์ ์คํ๋์ง ์๊ธฐ ๋๋ฌธ!
componentDidUpdate()
์ด ๋ฉ์๋๋ ์ปดํฌ๋ํธ๊ฐ ๊ฐฑ์ ๋ ๋๋ง๋ค ํธ์ถ๋๋ ๋ฉ์๋๋ค.
์ปดํฌ๋ํธ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ์ปดํฌ๋ํธ๊ฐ ์ฌํ๊ฐ๋๋ฉฐ ๋ ๋๋ง์ด ๋ค์ ์ผ์ด๋ ๋๋ฅผ ๋งํ๋ค.
useEffect ํ
์ ์์กด์ฑ ๋ฐฐ์ด์ ๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ, ์ด ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค useEffect ํจ์๋ ๋ค์ ์ฌ์คํ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ญํ ์ ํ๋ค.
์ปดํฌ๋ํธ๊ฐ ์ฌํ๊ฐ ๋๊ฑฐ๋ ๋ฆฌ๋ ๋๋ง ๋ ๋ ์์กด์ฑ ๋ฐฐ์ด๋ ์ฌํ๊ฐ๋๊ธฐ ๋๋ฌธ!
useEffect(() => {
setFilteredUsers(DUMMY_USERS.filter((user) => user.name.includes(searchTerm)));
}, [searchTerm]);
searchTerm์ด๋ผ๋ ๊ฐ์ ๋ณํ๊ฐ ์ผ์ด๋ ๋๋ง๋ค ์ฌ์คํ๋๋ค.
componentWillUnmount()
์ด ๋ฉ์๋๋ ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ญ์ ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ค.
useEffect ํ
์ ํด๋ฆฐ์
ํจ์์ ๊ฐ์ ์ญํ ์ ํ๋ค.
ํด๋ฆฐ์
ํจ์๋ useEffect ํ
์์ return ๊ฐ์ด ์ ์๋ ํจ์๋ก, useEffect๊ฐ ๋ค์ ์คํ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๊ณ , ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ญ์ ๋๊ธฐ ์ ์ ๋ค์ ํธ์ถ๋๋ค.
useEffect( return ()=> {
console.log('User will unmount');
}
}, []);
์ฐธ๊ณ
- https://ko.reactjs.org/docs/hooks-effect.html
- Udemy React ์๋ฒฝ ๊ฐ์ด๋ with Redux, Next.js, TypeScript
๐คธโ๏ธ๐คธโ๏ธ๐คธโ๏ธ๐คธโ๏ธ๐คธโ๏ธ๐คธโ๏ธ
๋ฐฉ๋ฌธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๐
ํฌ์คํ ๋ค์ ๊ณต๋ถ์ค์ธ ๋ด์ฉ์ ๊ธ๋ก ์์ฑํ ๊ฒ์ด๋ผ ๋ถ์กฑํ ์ ์ด ๋ง์ผ๋ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
๋ถ์กฑํ ๋ถ๋ถ์ ๋ํ ์ฝ๋ฉํธ๋ ์ธ์ ๋ ํ์์ ๋๋ค.
์ข์ ํ๋ฃจ ๋์ธ์, ๊ฐ์ฌํฉ๋๋ค! ๐
'๐ Studying > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React-thunk ์์๋ณด๊ธฐ (0) | 2022.12.20 |
---|---|
[React] Styled-Components ํ์ฉ (0) | 2022.12.08 |
[React] State์ Props (0) | 2022.12.07 |
[React] PropTypes๋ก props ํ์ ๊ฒ์ฌ (0) | 2022.12.05 |
[React] ๋ฆฌ๋์ค.. ์ ์ฐ์ฃ ? ํ์์ฑ๊ณผ ๊ทธ ๊ตฌ์กฐ์ ๋ํด (0) | 2022.09.29 |
Comment