[React-React Hooks] useRef

๐Ÿ“„ useRef๋กœ ํŠน์ • DOM ์„ ํƒํ•˜๊ธฐ

๋ฆฌ์•กํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ์ง์ ‘ DOM์š”์†Œ์— ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

useRef๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ํŠน์ • DOM์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const nameInput = useRef(); // DOM ์ ‘๊ทผ

๋ณ€์ˆ˜ ํ˜น์€ ์ƒ์ˆ˜์— useRef๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

<input
  name="name"
  placeholder="์ด๋ฆ„"
  onChange={onChange}
  value={name}
  ref={nameInput} // useRef
/>

์›ํ•˜๋Š” ๊ณณ์— useRef๋ฅผ ํ˜ธ์ถœํ•ด ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

const onReset = () => {
  // ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ
  setInputs({
    name: "",
    nickname: "",
  });
  nameInput.current.focus();
};

onResetํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด nameInput์„ ์ง€์ •ํ•œ DOM์š”์†Œ์— ์ ‘๊ทผํ•˜์—ฌ focus๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“„ useRef๋กœ ์ปดํฌ๋„ŒํŠธ ์•ˆ์˜ ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ

useRef๋Š” DOM์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์–ด๋–ค ๊ฐ’์„ ๊ณ„์† ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

useRef๋กœ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ์•ˆ์˜ ๋ณ€์ˆ˜๋Š” ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฆฌ๋ Œ๋”๋ง ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

function App() {
  ...

  const nextId = useRef(4);

  const onCreate = () => {

    console.log(nextId.current); // 4
    nextId.current += 1;
  }

  ...
}

nextId์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ์ฒ˜

  • ํŒจ์ŠคํŠธ์บ ํผ์Šค for velopert

Leave a comment