πŸ€·πŸ»β€β™€οΈ useRef?

λ‚˜μΏ ν¬Β·2023λ…„ 1μ›” 7일
0

useRefλŠ” .current ν”„λ‘œνΌν‹°μ— λ³€κ²½ κ°€λŠ₯ν•œ 값을 λ‹΄κ³  μžˆλŠ” β€œμƒμžβ€μ™€ κ°™μŠ΅λ‹ˆλ‹€.
useRefλŠ” 맀번 λ Œλ”λ§μ„ ν•  λ•Œ λ™μΌν•œ ref 객체λ₯Ό μ œκ³΅ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
useRefλŠ” λ‚΄μš©μ΄ 변경될 λ•Œ 그것을 μ•Œλ €μ£Όμ§€λŠ” μ•ŠλŠ”λ‹€λŠ” 것을 μœ λ…ν•˜μ„Έμš”.
.current ν”„λ‘œνΌν‹°λ₯Ό λ³€ν˜•ν•˜λŠ” 것이 λ¦¬λ Œλ”λ§μ„ λ°œμƒμ‹œν‚€μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

useRefλŠ” μ €μž₯ 곡간과 DOMμš”μ†Œμ— 접근을 μœ„ν•΄ μ‚¬μš©λ˜λŠ” HOOKSμž„
Stateκ°€ λ³€ν• λ•Œλ§ˆλ‹€(useState) λ¦¬λ Œλ”λ§ λ˜λ©΄μ„œ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€ λ³€μˆ˜λ“€μ΄ μ΄ˆκΈ°ν™”λ˜λŠ”λ°,
Refμ•ˆμ— μžˆλŠ” 값은 아무리 변경해도 μ»΄ν¬λ„ŒνŠΈλŠ” λ‹€μ‹œ λ Œλ”λ§ λ˜μ§€ μ•ŠμŒ
즉, λΆˆν•„μš”ν•œ λ Œλ”λ§μ„ 막을 수 있음
λ˜ν•œ 아무리 λ¦¬λ Œλ”λ§μ΄ λ˜μ–΄λ„ refμ•ˆμ— μ €μž₯λ˜μ–΄ μžˆλŠ” 값은 λ³€ν™”λ˜μ§€ μ•Šκ³  μœ μ§€λ¨
λ”°λΌμ„œ λ³€κ²½ μ‹œ λ Œλ”λ§μ„ λ°œμƒμ‹œν‚€μ§€λ§μ•„μ•Όν•˜λŠ” 값을 λ‹€λ₯Ό λ•Œ ref μ‚¬μš©

const App = () => {
  const input = useRef<HTMLInputElement>(null);
  const handleClick = () => {
    if(input.current){
      input.current.focus();
    }
  }
  
  return (
    <div>
      <input type="text" ref={inpit} />
      <button type="button" onClick={handleClick}>Click to Focus</button>
    </div>
  );
}

0개의 λŒ“κΈ€