useRef
ํ์ต ํค์๋
useRef
๐ useRef
๋ ๋๋ง์ ํ์ํ์ง ์๋ ๊ฐ์ ์ฐธ์กฐ ํ ์ ์๋ React hook
useRef๋ .current ํ๋กํผํฐ๋ก ์ ๋ฌ๋ ์ธ์(initialValue)๋ก ์ด๊ธฐํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ref ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐํ๋ ๊ฐ์ฒด๋ ์ปดํฌ๋ํธ์ ์ ์์ ์ฃผ๊ธฐ๋ฅผ ํตํด ์ ์ง๋ ๊ฒ์ ๋๋ค.
์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด๋น ์ปดํฌ๋ํธ์ ํ์ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ์ง๋ง, ๋ ํผ๋ฐ์ค ๊ฐ์ฒด์ ํ์ฌ ๊ฐ(current)์ด ๋ฐ๋๋๋ผ๋ ๋ ๋๋ง์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
๐ค useRef ์ธ์ ์ฌ์ฉํ๋๊ฐ?
์ ์ง๋๋ ๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ(์ปดํฌ๋ํธ ์์ ๋ณ์ ๋ง๋ค๊ธฐ)(feat.๋ฆฌ๋ ๋๋ง ๋ฐฉ์ง)
ex. Input id ๊ด๋ฆฌ (UI์ ๊ด์ฌํ์ง ์๋ ๊ฐ)
์ค๋ฌด : ๊ฒ์ ํ ์ด์ ์ ํค์๋๋ก ๊ฒ์ํ ๊ฒฐ๊ณผ๊ฐ ์ ์ง ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ
DOM ์์์ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ
input์ ๊ฐ์ ์ ๋ ฅํ์ง ์์์ ๊ฒฝ์ฐ focus(์ ํจ์ฑ์ฒดํฌ)
๐ค ํ๋ฉด์ด ๋ ๋๋ง ๋์ด๋ ์ ์ง๋๋ ๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ
๋ฆฌ์กํธ์ state์ props์ ๊ฐ์ด ๋ณ๊ฒฝ ๋ ๋ ๋ง๋ค ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋๊ฒ ๋๋ค. ๋ง์ฝ ๊ฐ์ ๋ณ๊ฒฝ๋์ง๋ง ํ๋ฉด์ ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋์ง ์๊ฒ ํ๋ ค๋ฉด? ๋ํ ํ๋ฉด์ด ๋ฆฌ๋ ๋๋ง ๋์ด๋ ๊ฐ์ด ์ ์ง ๋๋๋ก ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
์๋ฐ์คํฌ๋ฆฝํธ ์ฒ๋ผ ๋ณ์๋ฅผ ์ ์ธํด์ ์ฌ์ฉํ๋ฉด ๋์ง ์๋?
์ปดํฌ๋ํธ๋ด์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฒ๋ผ let์ ์ด์ฉํด ๋ณ์๋ฅผ ์ ์ธํด์ ๊ฐ์ ์์ ํ๋ฉด ํ๋ฉด์ด ๋ ๋๋ง ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ฝ state ๊ฐ์ด ๋ณ๊ฒฝ๋์ด ํ๋ฉด์ด ๋ฆฌ๋ ๋๋ง ๋๋ค๋ฉด let์ ์ด์ฉํด ์ ์ธํ ๋ณ์๋ ๋ค์ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋์ด ๊ฐ์ด ์ ์ง ๋์ง ์๋๋ค.
๐ค DOM ์์์ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ
JavaScript๋ฅผ ์ฌ์ฉํ ๋๋, ํน์ DOM์ ์ ํํด์ผ ํ๋ ์ํฉ์ getElementById, querySelector๊ฐ์ DOM Selector ํจ์๋ฅผ ์ฌ์ฉํด์ DOM์ ์ ํํ๋ค. ํ์ง๋ง ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ฉด DOM์ ์ง์ ์ ๊ทผํ ์ผ์ด ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ์กํธ๊ฐ renderํจ์๋ฅผ DOM์ ์ ๋ฐ์ดํธ ํด์ค๋ค. ํ์ง๋ง ์๋์ ๊ฒฝ์ฐ์ฒ๋ผ DOM ์์์ ์ ๊ทผ ํด์ผ ํ๋ ๋ช๊ฐ์ง ๊ฒฝ์ฐ๋ ์๋ค.
์คํฌ๋กค ์์น๋ฅผ ์ ์ดํด์ผ ํ ๋ (ex.Top ๋ฒํผ)
ํน์ ์์์ ํฌ์ปค์ค๋ฅผ ๋ง์ถฐ์ผ ํ ๋
๐ค useRef ์ฌ์ฉ๋ฒ
useRef๋ ์ฒ์์ ์ ๊ณตํ ์ด๊ธฐ๊ฐ์ผ๋ก ์ค์ ๋ ๋จ์ผ current ํ๋กํผํฐ๊ฐ ์๋ ref ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ref ๋ด๋ถ์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ค๋ฉด current
์์ฑ์ ์์ ํด์ผ ํ๋ค.
useRef ๋ํ์ ์ธ ์ฌ์ฉ ์์
๐ ์ฐธ๊ณ
Last updated