useImperativeHandle์ ref๋ก ๋ ธ์ถ๋๋ ํธ๋ค์ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ํ ์ ์๊ฒ ํด์ฃผ๋ React ํ ์ด๋ค.
useImperativeHandle(ref, createHandle, dependencies?)
// createHandle: ์ธ์๊ฐ ์๊ณ ๋
ธ์ถํ๋ ค๋ ref ํธ๋ค์ ๋ฐํํ๋ ํจ์
undefined๋ฅผ ๋ฐํํ๋ค. (return X)Modal ์ปดํฌ๋ํธ์์ {open, close}์ ๊ฐ์ ๋ช
๋ นํ ํธ๋ค๋ก ๋
ธ์ถํ๋ ๋์ <Modal isOpen={isOpen} />๊ณผ ๊ฐ์ isOpen prop์ ๊ถ์ฅํ๋ค. ์ด๋ก์จ ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ์์ธก ๊ฐ๋ฅํ๋ฉฐ, ์ปดํฌ๋ํธ์ ๋
๋ฆฝ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ด ํฅ์๋๋ค. Effect๋ฅผ ์ฌ์ฉํ๋ฉด prop์ ํตํด ๋ช
๋ นํ ๋์์ ๋
ธ์ถํ ์ ์๋ค.forwardRef์ ํจ๊ป ์ฌ์ฉํ ๋๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ์ ๋ ํผ๋ฐ์ค๋ฅผ ํ๋ํ๊ณ
useImperativeHandle์ ์ฌ์ฉํ์ฌ ๋ ํผ๋ฐ์ค์ ๋ ธ์ถํ ๋ฉ์๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ค. ์ด๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ์กฐ์ํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค.
forwardRef ์์ด ์ฌ์ฉํ ๋์ปดํฌ๋ํธ ๋ด๋ถ์์ ํน์ ๋ช ๋ นํ ๋์์ ์ธ๋ถ๋ก ๋ ธ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ์
forwardRef์์ด ๊ฐ๋ฅํ๋ค.
์ฐธ๊ณ https://react-ko.dev/reference/react/useImperativeHandle