2. React hook
ํ์ต ํค์๋
React Hook ์ด๋
Hooks
useState
useEffect
useContext
useRef
useLayoutEffect
React StrictMode ๋
React 16.8 ์์ hook์ด ๋์ ๋๊ธฐ ์ ๊น์ง๋,
์ํ๋ฅผ ๊ฐ์ง ์ปดํฌ๋ํธ๋ Class component๋ก ๋ง๋ค๊ณ , props๋ง ์ฌ์ฉํ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ
์์, ํจ์ดํ ์ปดํฌ๋ํธ๋ง functional component๋ก ์์ฑํ์๋ค.
ํ์ฌ๋ functional๋ง ์ฐ๊ฒ๋จ.
useEffect
๋ ๋๋ง ์ดํ์ ํด์ผํ ์ผ. ์ฆ react์ ์ธ๋ถ์ ๊ด๋ จ๋ ์ผ์ ์ ํด์ค ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋๋ง ๋๋ง๋ค ์คํ๋๋ฉฐ, ์์กด์ฑ ๋ฐฐ์ด์ ์ด์ฉํด ์ธ์ ์ดํํธ๋ฅผ ์คํํ ์ง ์ง์ ํ ์ ์๋ค(= ๋ถํ์ํ ๊ฒฝ์ฐ ๋ฆฌ๋ ๋ ํ์ง ์์).
ํจ์๋ฅผ ๋ฆฌํดํจ์ผ๋ก์จ ์ข ๋ฃ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
ํ์ด๋จธ ์์
React์ ์ธ๋ถ์ ์ฐ์ํ๊ฒ ์ ๊ทผํ๋ ๋ฒ.
์ด ์ ๋๋ useEffect๋ฅผ ์ ์ด๋ค๊ณ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง, ์ด๋ ๊ฒ ์ฐ๋ ์ต๊ด์ ๋ค์ด์.
useEffect ์์ ํจ์๋ฅผ ๋ฐ์ผ๋ก ๋นผ๋ ๋๋
useEffect ํด๋ก์ ๋ผ์ ์์์ ์ฐธ์กฐํ๋ ๋ค๋ฅธ state๊ฐ ์์ผ๋ฉด ๊ทธ๊ฑธ ์ฒ์์ ๋ฐ์ธ๋ฉํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
๊ฐ๋ฅํ๋ฉด ๋ค ์์ชฝ์ผ๋ก ๋ฃ์ผ๋ผ๋ ๋ง.
cleanup๊ณผ ๊ด๋ จํ ์ฌ๋ก.
์ฌ์ค ์ค๋ ๊ฒช์ ๋ฐ๋๋ฐ๋ํ ์ฌ๋ก.
์ฌ์ฉ์ list๋ฅผ ๋ณด์ฌ์ฃผ๋ modal-ui๊ฐ ์๋ค. ๋งจ ์์๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ฑ๋กํ๋ ๋ฒํผ์ด ์๋ค.
๊ทธ ๋ฐ์ ์ฌ์ฉ์ list๋ ๊ฐ ๊ฐ ํฐ๋ฒํผ์ด๋ฉฐ ๊ทธ ๋ฒํผ ์์ ์์ , ์ญ์ ๋ฒํผ์ด ์๋ค.
modal์ ๋๋ฉด ์๋์ ์๋ฌ๊ฐ warning์ด ๋ฐ์.
unmount๋๋ ์ปดํฌ๋ํธ์ state๋ฅผ updateํ ์ ์๋ค.
์ธ๋ง์ดํธ๋ ์ปดํฌ๋ํธ์์๋ ์ํ๋ฅผ ์ถ์ ํ ์ ์๊ณ , ์ํ๋ฅผ ์ถ์ ํ์ง ์๊ธฐ์ ์์ ์ด ์ํ๋์ง๋ ์์ง๋ง,
๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ผ๋, useEffect์ cleanup ํจ์๋ฅผ ์ด์ฉํด๋ผ
๊ตฌ๊ธ๋ง ํด๋ณด๋ฉด useEffect ์์ cleanup ํจ์๋ฅผ ์ด์ฉํด ํด๊ฒฐํ ์ฌ๋ก๋ฅผ ๋ง์ด ๋ณผ ์ ์๋ค.
๋ด ๊ฒฝ์ฐ๋ useEffect ์์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๊ณ , ์ฌ์ฉ์๋ฅผ ํด๋ฆญํด ์ ํํ ๋๋ง๋ค useEffect๊ฐ ๋๋๋ก
ํ๊ธฐ ๋๋ฌธ์ด๋ค. CRUD๋ฅผ ๊ตฌํํ๋ฉฐ ๋ด ์ ๋ณด, ๋ด์ ๋ณด๋ ์๋์ง๋ง ๋ฑ๋กํ ์ฌ๋์ ๋ณด, ์ญ์ , ์์ , ๋ฑ๋ก ์ด๋ฒคํธ๊ฐ
์์๋๋ง๋ค ๋ค์ list๊ฐ ๋ ๋๋๋๋ก ํด๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์ ๋๊ธฐํ๋ ๋นจ๋ฆฌ ๋์ง๋ง
์ฌ์ฉ์๋ฅผ ์ ํํ ๋๋ง๋ค ์ธ๊ฐ์ api๋ฅผ ํธ์ถํ์๊ณ pending ์ํ์ผ๋ ๋ชจ๋ฌ์ ๊บผ๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค.
์ผ๋จ ํ ๊ฐ์ api๋ ์์ผ๋ก ํ๋ฒ๋ ๋ณํ์ง ์์๋ ๋ผ์ ๋ฐ๋ก useEffect์ ๋น ์์กด์ฑ ๋ฐฐ์ด๋ก ๋๋๊ณ
๋ค๋ฅธ๊ฑด ์์กด์ฑ ๋ฐฐ์ด์ ์ ๋ฆฌํ๋ค. render๋ผ๋ state๋ฅผ ๋ง๋ค๊ณ list๊ฐ ๋ฆฌ๋ ๋ ๋์ด์ผํ ์ด๋ฒคํธ์ ์ถ๊ฐํด์ฃผ๋ ์์ผ๋ก.
fetch ํ ๋ ์ฃผ์์ฌํญ
page๋ฅผ ๋ฐ๊ฟ ๊ฒฝ์ฐ, ์๋ก ์ฝ์ด์ฌ ๊ฒฝ์ฐ.
๋ฐฉ๊ธ ๋ถ๋ฅธ๊ฑธ ์ทจ์ํ์ง ๋ชปํ๊ณ ๋ ๋ค ์ ๋ฐ์ดํธ ๋ ์ง ๋ชจ๋ฅด๋,
๊ทธ ์ ๊บผ๋ฅผ ์๋ํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ. ์ข ๋ฃ์ฒ๋ฆฌ.
์์ ๋ด ์ฌ๋ก์์๋ ์ด๋ฐ ๋ฐฉ์์ cleanup์ผ๋ก ํด๊ฒฐ๋์ง ์์๋๋ฐ,
useEffect๋ฅผ ์ฐ์ํด์ ๋ถ๋ฌ์๊ฐ ์๋๋ผ ํ๋ฒ์ ํ๋๋ผ๋ pending์ด ๋๋๊ธฐ ์ ์ ๋ชจ๋ฌ์ ๋ซ์์ ์ธ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๋ชจ๋ฌ์ด ๋ซํ๋ฉด์ cleanup ํจ์์์ ignore๋ฅผ ํ ๊ธํด์ ํธ์ถ์ ์ํ๊ฒ ๋๋๊ฑด๋ฐ ์ฌ์ค ๊ทธ๋ผ ๊ทธ๋ ๊ฒ ํด๋ ๋์ผํ๋๊ฑฐ ์๋๊ฐ.
์ข ํท๊ฐ๋ฆฌ๋ค..
์ค์ํ ๊ฑด, ๊ฐ๋ฐ์ ๋๊ตฌ network๋ฅผ ๋ณด๊ณ ํต์ ์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ํ์ ํ๋ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
Last updated