앞의 useState 는 동적인 데이터에 대해 update 가 발생하면 렌더링이 발생하는 반면
useRef 의 경우 렌더링 없이 값을 변경한다.
단, 화면에 즉각적으로 보여줘야 할 경우 useState ,
값이 변경 되는건 맞지만 화면에 반영하지 않는 내용일 경우 useRef 를 쓴다고 생각하면된다.
예를 들어서 화면에는 보이지 않는 키 값이나 boolean 같은걸 저장하는 변수로 쓰기 좋다 .
count 코드를 재사용해서 보게 된다면
import { useRef, useState } from 'react'
import './App.css'
import Input from './components/Input'
function App() {
const [count, setCount] = useState(1);
const onClickButton = (value) => {
setCount(count + value);
};
const clickRef = useRef(0);
return (
<div>
<Input onClickButton={onClickButton}/>
</div>
)
}
export default App
import { useRef, useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
const countRef = useRef(0);
const increaseState = () => {
setCount(count + 1);
};
const increaseRef = () => {
countRef.current += 1;
console.log("ref 값:", countRef.current);
};
return (
<div>
<h1>State 값: {count}</h1>
<h1>Ref 값: {countRef.current}</h1>
<button onClick={increaseState}>State 증가</button>
<button onClick={increaseRef}>Ref 증가</button>
</div>
);
}
export default Counter;
이렇게 코드를 짜게 되면

console.log 에서는 9가 찍히지만 화면에서는 8 이 출력 되는데
이는 ref는 렌더링을 발생시키지 않기 때문에 실제 값은 9 이지만 화면에는 8로 뜨게 된다.

그 상태에서 State 증가 버튼을 누르게 되면 렌더링이 발생하며 현재 값 9가 화면에 출력된다 .
렌더링이 굳이 발생 할 필요가 없다면 Ref를 쓰면 된다.
'JavaScript > React' 카테고리의 다른 글
| [React] 6. 리액트의 생명주기(Life cycle) (0) | 2025.02.14 |
|---|---|
| [React] 5. Hook (1) | 2025.02.14 |
| [React] 3. 상태 (State) [Props와 이어집니다.] (1) | 2025.02.12 |
| [React] 2. 속성 (Props) (0) | 2025.02.12 |
| [React] 0. 세팅 (3) | 2025.02.07 |