const ref = useRef(value)
useRef๋ ํฌ๊ฒ ๋ค์ ๋ ๊ฐ์ง์ ๊ธฐ๋ฅ์ด ์๋ค.
์ฒซ ๋ฒ์งธ๋ ๋ณ์ ๊ด๋ฆฌ, ๋ ๋ฒ์งธ๋ DOM ์์ ์ ๊ทผ.
ํจ์ํ ์ปดํฌ๋ํธ์์ useRef๋ฅผ ๋ถ๋ฅด๋ฉด {current:value}๋ก ์๊ธด ref ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํด์ค๋ค. useRef์ ์ธ์๋ก ๋ค์ด๊ฐ value๋ ref ์ค๋ธ์ ํธ์ current ๊ฐ์ผ๋ก ์ ์ฅ๋๋ค. ๋ฐํ๋ ref๋ ์ปดํฌ๋ํธ์ ์ ์์ ์ฃผ๊ธฐ๋ฅผ ํตํด ์ ์ง๋๋ค. ์ปดํฌ๋ํธ๊ฐ ๊ณ์ ๋ ๋๋ง๋์ด๋, ์ธ๋ง์ดํธ๋๊ธฐ ์ ๊น์ง ๊ฐ์ ๊ณ์ ์ ์งํ ์ ์๋ค.
๋ณํ๋ ๊ฐ์งํ์ง๋ง, ๊ทธ ๋ณํ๊ฐ ๋ ๋๋ง์ ์ ๋ฐํ๊ฒ ํ๊ณ ์ถ์ง ์์ ๋ ๋น์ ๋ฐํ๋ค โจ
useRef๋ ref ๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํด์ฃผ๋๋ฐ, ์ด ref๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ ๊ทผํ๊ณ ์ ํ๋ ์์ ํ๊ทธ์ ref ๋ผ๋ ์์ฑ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.(ex. <input ref={ref}/>
)
๋ํ์ ์ผ๋ก ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ์์๋ก๋, ๋ก๊ทธ์ธ ํ์ด์ง์์ ๊ตณ์ด input์ ํด๋ฆญํ์ง ์์๋ ์๋์ผ๋ก focus ๋์ด์์ด ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ํ์ดํํด์ค ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค. ๋ง์น, ๋ฐ๋๋ผ์๋ฐ์คํฌ๋ฆฝํธ์ document.querySelector ๊ฐ์!
import React, { useRef, useEffect } from 'react'
function Login() {
const inputRef = useRef()
useEffect(() => {
inputRef.current.focus()
}, [])
const onLogin = () => {
alert(`์๋
ํ์ธ์ ${inputRef.current.value}`)
}
const onEnter = (e) => {
if (e.key === 'Enter') {
onLogin()
}
}
return (
<div>
<input ref={inputRef} type="text" placeholder="id๋ฅผ ์
๋ ฅํด์ฃผ์ธ์" onKeyDown={onEnter} />
<button onClick={onLogin}>๋ก๊ทธ์ธ</button>
</div>
)
}
export default Login
์ค๋ ์๋กญ๊ฒ ์๊ฒ ๋ ์ :
์ค๋ ๋ฐฐ์ด๊ฒ๋ค ์ค ๊ถ๊ธํ๊ฑฐ๋ ๋ ์๊ณ ์ถ์ ์ :
๋๋ฒ์งธ ๋ก๊ทธ์ธ์ฐฝ ๊ตฌํํ๋ ํ์ด์ง์์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ด์ฐฎ์๋ฐ, Enter key ๋ฅผ ์น๋ฉด alert์ฐฝ์ด ๋๋ฒ ๋ฌ๋ค. React.StrictMode๋ ๊ด๋ จ์ด ์๋ ์ถ์ด ์ง์๋ดค๋๋ฐ ์ฌ์ ํ๋ค. ๋ญ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ์ผ๋จ ์ค๋์ Hooks ๋ชจ๋ ๊ณต๋ถํ๋ ๊ฒ ๋ชฉํ๋ผ, ๋์ค์๋ผ๋ ๋ค์ ํด๊ฒฐํด๋ด์ผ๊ฒ ๋ค.
์ค๋์ ์๊ฐ:
๊ณต๋ถํ๋ ๊ฒ ์ฌ๋ฏธ์์๋๋ฐ, ์ ์ ๊ณต๋ถํ ์๋ก ๋ด๊ฐ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ด ๋ง์์ง๊ณ , ๋ ์๋ ๊ฒ๋ค์ด ์ด์ด์ง๋๊น ์ฌ๋ฐ์ด์ง๋ ๊ฒ ๊ฐ๋ค. ๋น์ฅ ์ํ ์๋ ์์ด๋, ๋งค์ผ๋งค์ผ ์กฐ๊ธ์ฉ ์ ์ ๋ ์ฑ์ฅํ๋ ์ฌ๋์ด ๋๋ฉด ์ข๊ฒ ๋ค.