โฑ useRef
๐ถ useRef()
๋ฆฌ์กํธ์์ ref๋ ์ฃผ๋ก DOM ๋ ธ๋ ์ฐธ์กฐ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ์ปดํฌ๋ํธ ๋ ๋๋ง์ ์ํฅ์ ์ฃผ์ง ์๋ ๊ฐ ์ฐธ์กฐ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
useRef()
๋ ํจ์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ํน์ ๊ฐ์ ์ง์์ ์ผ๋ก ์ฐธ์กฐํ ๋ ์ฌ์ฉํ๋ค. useState()
์ ๋ฌ๋ฆฌ useRef()
๋ ํ์ฌ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋์ง ์์ ์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ์ ์ต์ ํ ํ ์ ์๋ค.
1 | // useRef() ํ ์ ์ฌ์ฉํด ์นด์ดํธ ์ฐธ์กฐ ์์ฑ |
ํด๋์ค๋ ์์ ์ ์ธ์คํด์ค ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํด ๋ ๋๋ง ์๊ด์์ด ํน์ ๊ฐ์ ๊ธฐ์ตํ ์ ์๋๋ฐ ๋ฐํด, ํจ์๋ ๋ค์ ๋ ๋๋ง ๋๋ฉด ๋งค๋ฒ ํจ์ ๋ชธ์ฒด๊ฐ ์ด๊ธฐํ ๋๋ฏ๋ก ํน์ ๊ฐ์ ๊ธฐ์ตํ ๋ useRef()๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
๐ฅ useRef() ์ฌ์ฉ๋ชฉ์
1. DOM ์์ ์ ๊ทผ ๋ฐ ์กฐ์
๋ฆฌ์กํธ render() ๋จ๊ณ์์๋ DOM์ด ๊ทธ๋ ค์ง๊ธฐ ์ ๋จ๊ณ์ด๋ฏ๋ก
ํ์ง๋ง useRef()๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๊ฐ mount๋ ์์ ์ดํ DOM ์์์ ์ ๊ทผํ์ฌ ์กฐ์ํ ์ ์๋๋ก ๋์์ค๋ค.
1 | function TextInputWithFocusButton() { |
- ์์ง DOM์ด ๊ทธ๋ ค์ง๊ธฐ ์ ์ด๋ผ DOM ์์์ ์ ๊ทผํ์ฌ focus()๋ฅผ ํ์ฑํ ์ํฌ ์ ์์ง๋ง, useRef()๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ฌ DOM ์์์ ์ ๊ทผํ ์ ์๋๋ก ๋์์ค๋ค.
2. ํจ์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ํน์ ๊ฐ์ ๊ธฐ์ต
ํจ์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ํน์ ๊ฐ์ ๊ธฐ์ตํ๋ฉด์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ์ปดํฌ๋ํธ ๋ ๋๋ง์ ์ํฅ์ ์ฃผ์ง ์์์ผํ๋ค.
1 | import { useEffect, useRef, useState } from "react"; |
useState()
์setStateValue()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ์ฌ๋ ๋๋ง์ด ๋ฐ์ํ์ง๋ง,useRef()
์ current ๊ฐ์ ๊ฐฑ์ ํ๋ฉด ์ฌ๋ ๋๋ง์ด ๋ฐ์ํ์ง ์๋๋ค.