Contents

React hooks에 λŒ€ν•˜μ—¬

   Jun 20, 2023     1 min read

React-Hooks에 λŒ€ν•œ κΈ€μž…λ‹ˆλ‹€.

React-Hooks에 λŒ€ν•˜μ—¬ 1νŽΈμž…λ‹ˆλ‹€.

useState()λ‚˜ useEffect()처럼 많이 쓰지 μ•Šμ§€λ§Œ μœ μš©ν•œ hooksκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ useRef()μž…λ‹ˆλ‹€. μ˜€λŠ˜μ€ 이 녀석을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

React κΈ°λ³Έ 원리뢀터 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

기본적으둜 λ‚΄λΆ€ μƒνƒœ(state)κ°€ λ³€ν•  λ•Œ λ§ˆλ‹€ λ‹€μ‹œ λ Œλ”λ§μ΄ λ©λ‹ˆλ‹€. 쑰금 μ°μ°ν•˜μ§€ μ•Šλ‚˜μš”? ν•¨μˆ˜κ°€ 호좜될 λ•Œλ§ˆλ‹€ 화면이 κ°±μ‹ λœλ‹€λ©΄ ν•¨μˆ˜ λ‚΄λΆ€μ˜ λ³€μˆ˜λ“€μ΄ 기쑴에 μ €μž₯ν•˜λŠ” 값도 같이 μ΄ˆκΈ°ν™”λ˜λŠ” 점이… λ…μžλ‹˜λ“€λ„ μ“°μž„μ— 따라 λ‹€μ‹œ λ Œλ”λ§λ˜λ”λΌλ„ 기쑴에 μ°Έκ³ ν•˜κ³  있던 μ»΄ν¬λ„ŒνŠΈ ν•¨μˆ˜ λ‚΄μ˜ 값이 κ·ΈλŒ€λ‘œ λ³΄μ‘΄λ˜λŠ” 것을 μ˜λ„ν•˜κ³  싢을 λ•Œλ„ 있기 λ•Œλ¬Έμ— μ°μ°ν•˜μ§€ μ•Šμ•˜μ„κΉŒ μ‹ΆμŠ΅λ‹ˆλ‹€.

Reactμ—μ„œλŠ” μ–΄λ–€ Hook으둜 문제λ₯Ό ν•΄κ²°ν• κΉŒμš”?

useRef 훅을 μ‚¬μš©ν•΄ 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. useRef ν•¨μˆ˜λŠ” 인자둜 λ„˜μ–΄μ˜¨ μ΄ˆκΈ°κ°’μ„ 속성에 ν• λ‹Ήν•˜μ—¬ 값을 변경해도 μ»΄ν¬λ„ŒνŠΈκ°€ λ‹€μ‹œ λ Œλ”λ§λ˜μ§€ μ•Šκ²Œ ν•©λ‹ˆλ‹€. 즉, μ»΄ν¬λ„ŒνŠΈκ°€ λ‹€μ‹œ λ Œλ”λ§λ  λ•Œλ„ 속성값을 μžƒμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ Œλ”λ§μ„ λ°œμƒμ‹œν‚€μ§€ 말아야 ν•˜λŠ” 값을 λ‹€λ£° λ•Œ 정말 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예제
const nameInput = useRef();

const onClick = () => {
    nameInput.current.focus();
}

return(
    <input ref={nameInput} />
    <button onClick={onClick}>클릭</button>
)
κ²°κ³Ό

인풋에 값을 μž…λ ₯ν•œ λ‹€μŒ 클릭 λ²„νŠΌμ„ λˆŒλŸ¬λ„ 포컀슀λ₯Ό μžƒμ§€ μ•Šκ³ , μΈν’‹λ°•μŠ€μ— ν¬μ»€μŠ€κ°€ μž‘νž™λ‹ˆλ‹€.

λ‚΄μš© 및 예제 μ½”λ“œ 핡심 μš”μ•½
  • javascriptμ—μ„œ νŠΉμ • Dom을 μ„ νƒν•˜λŠ” 역할을 ν•œλ‹€. (getElementById, querySelector λ“±)
  • νŠΉμ • DOM에 μ ‘κ·Όν•  λ•Œ μ‚¬μš©ν•œλ‹€.
  • μ™ΈλΆ€ 라이브러리 μ‚¬μš©ν• λ•Œ μœ μš©ν•˜λ‹€.
  • μ›ν•˜λŠ” μœ„μΉ˜μ— ref={} 의 ν˜•νƒœλ‘œ μž‘μ„±ν•˜λ©΄ λœλ‹€.
  • 포컀슀λ₯Ό 작으렀면 nameInput.current.focus() ν˜•νƒœλ‘œ μž‘μ„±ν•˜λ©΄ λœλ‹€.