TIL/기록

[TIL] useState와 useRef

developeryeon 2024. 1. 31. 17:40

 

 

import { useState, useRef } from 'react';

function App() {
	const [count, setCount] = useState(0);
	const refCount = useRef(0);

	const plusCountHandler = () => {
		setCount(count + 1);
	};


	return (
		<>
			<h1>UseState 카운트 : {count}</h1>
			<button onClick={plusCountHandler}>숫자 1 증가</button>
			<br />
			<h1>UseRef 카운트 : {refCount.current}</h1>
			<button
				onClick={() => {
					refCount.current = refCount.current + 1;
					console.log(refCount.current);
				}}
			>
				+
			</button>
		</>
	);
}

export default App;

 

 

  • useState

useState는 컴포넌트의 상태를 관리하고 값이 변경될 때마다 변화가 일어나 컴포넌트가 리렌더링이 되고 UI가 갱신된다.  함수가 다시 그려지니 내부 변수들은 초기화가 된다.그래서 state는 리렌더링이 꼭 필요한 값을 다룰 때 쓸 수 있다. 물론 다시 리렌더링되는 것에 메모리나 비용적으로 useRef보다 비효율적인 면도 있지만 값을 그때그때 확인할 수 있는 것과 또한 React 공식문서에서 form 요소는 사용자 입력에 따라 상태가 변경되는 경우가 많기 때문에 효과적으로 입력값의 상태를 간편하게 관리할 수 있는 useState를 사용하길 권장한다.

 

 

 

  • useRef

useRef에 저장한 값이 바뀌더라도 리렌더링이 일어나지 않는다. 그래서 렌더링으로 인해 내부 변수들이 초기화 되는 것을 막을 수 있다.useRef는 DOM 요소에 직접적으로 접근할 수 있다. 포커스를 설정하고자 할 때 해당 DOM 요소에 참조를 만들고 .current property를 통해 직접 해당 DOM 요소에 접근한다. useRef는 리렌더링을 발생시키지 않는 값, 내부적으로 안봐도 되는 값을 저장할 때 사용된다. 렌더링 되자마자 특정 해당 DOM을 사용하면 된다.