๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Development/React.js

[React] ref, useRef

by DevIseo 2023. 1. 24.

ref?

  • JS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํŠน์ • DOM์„ ์„ ํƒํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ getElementById, querySelector ๊ฐ™์€ DOM Selector ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ DOM์„ ์„ ํƒ
  • ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ DOM์„ ์ง์ ‘ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋ฉด ref๋ฅผ ํ™œ์šฉ
  • ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ **ref**๋ฅผ ์‚ฌ์šฉ ํ•  ๋•Œ์—๋Š” **useRef** ๋ผ๋Š” Hook ํ•จ์ˆ˜ ์‚ฌ์šฉ
  • ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ **React.createRef ๋ผ๋Š” ํ•จ์ˆ˜ ์‚ฌ์šฉ**
  • ํฌ์ปค์Šค๋ฅผ ์žก์œผ๋ ค๋ฉด nameInput.current.focus() ํ˜•ํƒœ๋กœ ์ž‘์„ฑ
const nameInput = useReft();

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

return(
    <input ref={nameInput} />
    <button onClick={onClick}>ํด๋ฆญ</button>
)

useRef?

  • ๋ฆฌ๋žœ๋”๋ง ํ•˜์ง€ ์•Š๊ณ , ์ปดํฌ๋„ŒํŠธ์˜ ์†์„ฑ๋งŒ ์กฐํšŒ & ์ˆ˜์ •
    • ์ปดํฌ๋„ŒํŠธ์— focus๋ฅผ ์œ„์น˜์‹œํ‚ฌ ํ•„์š” ์žˆ๋Š” ๊ฒฝ์šฐ
    • ์†์„ฑ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
    • useRef๋กœ ์ปดํฌ๋„ŒํŠธ ์•ˆ์˜ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ
const refContainer = useRef(initialValue)
  • useRef๋Š” .currentํ”„๋กœํผํ‹ฐ๋กœ ์ „๋‹ฌ๋œ ์ธ์ž(initialValue)๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ref ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
  • ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ „ ์ƒ์• ์ฃผ๊ธฐ๋ฅผ ํ†ตํ•ด ์œ ์ง€
function TextInputWithFocusButton() {
  const inputEl = useRef(null);
  const onButtonClick = () => {
    // `current` points to the mounted text input element
    inputEl.current.focus();
  };
  return (
    <>
      <input ref={inputEl} type="text" />
      <button onClick={onButtonClick}>Focus the input</button>
    </>
  );
}
  • ๋ณธ์งˆ์ ์œผ๋กœ useRef๋Š” .current ํ”„๋กœํผํ‹ฐ์— ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” “์ƒ์ž”
  • useRef๋Š” ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์•Œ๋ ค์ฃผ์ง€๋Š” ์•Š์Œ
  • .current ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€ํ˜•ํ•˜๋Š” ๊ฒƒ์ด ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€๋Š” ์•Š์Œ

Reference

Hooks API Reference - React

10. useRef ๋กœ ํŠน์ • DOM ์„ ํƒํ•˜๊ธฐ

[React] useRef() ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

'Development > React.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React] font ์ ์šฉ  (0) 2023.01.28
[React] console.log(useRef)  (0) 2023.01.25
[React] port ๋ฒˆํ˜ธ ๋ณ€๊ฒฝํ•˜๊ธฐ  (0) 2023.01.23
[React] React Hook API  (0) 2023.01.18
[React] React Life Cycle ; ๋ฆฌ์•กํŠธ ์ƒ๋ช…์ฃผ๊ธฐ  (0) 2023.01.14

๋Œ“๊ธ€