UseRef
์ฌ์ฉํ๋ ์ด์
๋ฆฌ๋ ๋๋ง ์์ด ์ ๋ณด๋ฅผ ๊ธฐ์ต
useRef๋ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง๋ง, useState์ ๋ฌ๋ฆฌ ๋ณ๊ฒฝ๋์ด๋ ๋ฆฌ๋ ๋๋ง์ด ํธ๋ฆฌ๊ฑฐ ๋์ง ์๋๋ค.
์ฌ์ฉ๋ฒ
ref.current
๋ฅผ ํตํด ๊ฐ์ ์ฝ๊ณ ๋ณ๊ฒฝํ ์ ์๋ค.ref.current
๋ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ด๋ค.๋ ๋๋ง์ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ณด์ ํ ๋ ์ด ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํด์๋ ์๋๋ค.
๋ ๋๋ง ์ค์ ์ฝ๊ฑฐ๋ ์ฐ๋ฉด ์๋๋ค -> ์ปดํฌ๋ํธ์ ๋์์ ์์ธกํ๊ธฐ ์ด๋ ค์์ง๋ค. -> ๋์ useState๋ฅผ ์ฌ์ฉ
Timer ํจ์ id ์ ์ฅ
setInterval
,setTimeout
ํจ์๋ ํ์ด๋จธ id ๊ฐ์ ๋ฐํํ๋คuseRef
๋ก id๊ฐ์ ์ ์ฅํ๋คclearInterval(ref.current)
,clearTimeout(ref.current)
๋ฅผ ํธ์ถํ์ฌ ํ์ด๋จธ๋ฅผ ์ค์ง
DOM ์๋ฆฌ๋จผํธ ์ฐธ์กฐ
html ์์์ ref ์์ฑ์ ํตํด ์ฐธ์กฐ๋ฅผ ๋๊ฒจ์ค๋ค
Mount
๋ ์ดํ์ref.current
๋ก DOM ์์์ ์ ๊ทผํ ์ ์๋ค.Unmount
๋๋ฉดref.current
๋null
๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
Ref ์ฝ๋ฐฑ ํจ์
ํด๋น DOM ๋ ธ๋๊ฐ ํ๋ฉด์ ํ์๋๋ฉด(DOM ํธ๋ฆฌ์ ์์ ๋) node๋ ํด๋น
DOM ๋ ธ๋ ์ฐธ์กฐ
๊ฐ์ ๊ฐ์งDOM ํธ๋ฆฌ์์ ์ ๊ฑฐ๋๋ฉด node๋
null
๊ฐ์ ๊ฐ์ง
ref ์ฝ๋ฐฑ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์คํ
ref ์ฝ๋ฐฑ์ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์คํ๋๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์ธ๋ผ์ธ ํจ์๋ ๋ฆฌ๋ ๋๋ง ๋๋ง๋ค ์คํ๋๋ค.
์ฒ์์๋ ๋ง์ดํธ ๋ ์ดํ์ ์คํ๋๋ฏ๋ก DOM ๋ ธ๋๊ฐ ์ฐํ๊ณ
๋ค์ ๋ฆฌ๋ ๋๋ง ๋ถํฐ๋ null์ด ์ฐํ ํ์ DOM ๋ ธ๋๊ฐ ์ฐํ๋ค.
์๋ฅผ ๋ค์ด useCallback์ ํตํด ๋ฆฌ๋ ๋๋ง ์์๋ ๋ณ๊ฒฝ๋์ง ์๋ ํจ์๊ฐ ์๋ค๋ฉด
๋ฆฌ๋ ๋๋ง ์์๋ ์ฝ๋ฐฑ์ด ์คํ๋์ง ์๋๋ค.
Map ๊ฐ์ฒด๋ฅผ ํตํ ref ๊ด๋ฆฌ
๋ง์ DOM ๋ ธ๋ ์ฐธ์กฐ๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด์ ๋ฐฐ์ด์ด๋ Map ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํ๋์ useRef์ Map ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ํด๋น Map ๊ฐ์ฒด ์์ id๊ฐ์ key๋ก ref๋ฅผ ๊ฐ๊ฐ ์ ์ฅ
forwardRef๋ก ref ๋
ธ์ถ
์ฐธ์กฐ
์ปดํฌ๋ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก DOM ๋ ธ๋(ref)๋ฅผ ๋ ธ์ถํ์ง ์๋๋ค.
forwardRef๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ์๋ฆฌ๋จผํธ์ฒ๋ผ ์ปดํฌ๋ํธ์์ ref์์ฑ์ ๋ฐ์ ์ ์๋ค.
Ref์ State์ ์ฐจ์ด์
์ผ๋ฐ ๋ณ์๋ ๋ฆฌ๋ ๋๋ง ์๋ง๋ค ์๋กญ๊ฒ ์ด๊ธฐํ๋๋ค.
useRef๋ ๋ฆฌ๋ ๋๋ง ์์๋ ์์กดํ๋ค
useState๋ ๋ฆฌ๋ ๋๋ง ์์ ๋ถ๋ณ๊ฐ์ด๊ณ , (๊ฐ์ ๊ฐ์ด ์๋) ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ๋ฆฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐ ํ๋ค.
useRef(initialValue) | useState(initialValue) | |
---|---|---|
๋ฐํ๊ฐ |
|
|
๋ฆฌ๋ ๋๋ง | ๋ณ๊ฒฝํ ๋ ๋ค์ ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค. | ๋ณ๊ฒฝํ ๋ ๋ค์ ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. |
๊ฐ ๋ณ๊ฒฝ |
| "๋ถ๋ณ" - ์ํ ์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ํ ๋ณ์๋ฅผ ์์ -> ๋ฆฌ๋ ๋๋ง์ด ๋๊ธฐ์ด์ ์ถ๊ฐ |
์ฝ๊ธฐ | ๋ ๋๋งํ๋ ๋์ | ์ธ์ ๋ ์ง ์ํ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ ๋ ๋๋ง์๋ ๋ณ๊ฒฝ๋์ง ์๋ ์์ฒด ์ํ ์ค๋ ์ท์ด ์์ต๋๋ค. |
ref์ ์ผ๋ฐ์ ์ฌ์ฉ
timer ํจ์์ id ๊ฐ ์ ์ฅ
DOM element ์กฐ์์ ์ํ ๊ฐ(์ฐธ์กฐ)์ ์ ์ฅ
JSX ๊ณ์ฐ์ ํ์์๋ ๊ฐ ์ ์ฅ
Last updated