useRef๋ž€ โ“

c_yjยท2022๋…„ 8์›” 9์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
12/13
post-thumbnail

useRef ๋ž€ ๐Ÿ˜ƒ

useRef๋ž€ ํŠน์ • DOM์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” hook ํ•จ์ˆ˜๋‹ค.

useRef๋Š” ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ โ“

1. ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ์ €์žฅ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค โœ”

Ref๋Š” ๋ Œ๋”๋ง์ด ๋˜์ง€์•Š๊ธฐ ๋–„๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
๋ณ€๊ฒฝ์‹œ ๋ Œ๋”๋ง์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฐ’์„ ๋‹ค๋ฃฐ ๋–„ ํŽธ๋ฆฌํ•˜๋‹ค

useState์™€ useRef๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ํ›…์˜ ์ฐจ์ด์ ์„ ์ •ํ™•ํžˆ ์•Œ์•„๋ณด์ž.

useState๋Š” ํด๋ฆญํ• ๋•Œ๋งˆ๋‹ค ๋ Œ๋”๋ง์ด ๋˜๋Š” ๋ฐ˜๋ฉด์— useRef๋Š” ์ฝ˜์†”์€ ์ฐํžˆ์ง€๋งŒ ๋ Œ๋”๋ง์€ ๋˜์ง€ ์•Š๋Š”๋‹ค. useState๋กœ ๋œ ํ•จ์ˆ˜๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ Œ๋”๋ง ๊ฐ’์ด ๋ฐ˜์˜๋˜์–ด ์ €์žฅ๋œ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

2. DOM ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค โœ”

input ์š”์†Œ์— focus๋ฅผ ์ค„ ๋–„ ์‚ฌ์šฉํ•œ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋”ฉ๋˜๋ฉด ์•„์ด๋””๋ฅผ ๋„ฃ๋Š” ๊ณต๊ฐ„์„ ๊ตณ์ด ํด๋ฆญํ•˜์ง€ ์•Š์•„๋„ ๋ฐ”๋กœ ํ‚ค๋ณด๋“œ๋ฅผ ์ณ์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

import React, { useRef, useEffect } from 'react';

function App() {
  const inputRef = useRef();
  useEffect(() => {
    inputRef.current.focus()
  }, [])


  return (
    <div className="App">
      <input ref={inputRef} type="text" placeholder='username'/>
    </div>
  );
}

export default App;

์ฐธ๊ณ 
https://www.youtube.com/watch?v=VxqZrL4FLz8

profile
FrontEnd Developer

0๊ฐœ์˜ ๋Œ“๊ธ€