728x90
반응형
SMALL
1. useState 정의
useState는 가장 기본적인 hook이며, 함수 컴포넌트에서 가변적인 상태를 가지게 해준다
useState의 기본적인 형태
const [state, setState] = useState(initialState);
state를 변수로 사용했고, setState를 이용해서 state 값을 수정할 수 있다.
그리고 만약 state가 원시 데이터타입이 아닌 객체 데이터 타입인 경우에는 불변성을 유지해줘야 한다.
2. 함수형 업데이트
setState의 ( ) 안에 수정할 값이 아니라, 함수를 넣을 수 있다.
그리고 그 함수의 인자에서는 현재의 state을 가져올 수 있고, { } 안에서는 이 값을 변경하는 코드를 작성할 수 있다.
// 일반 사용법
setState(number + 1);
// 함수형 업데이트
setState(() => {});
// 함수형 예시
// 현재 number의 값을 가져와서 그 값에 +1을 더하여 반환한 것 입니다.
setState((currentNumber)=>{ return currentNumber + 1 });
일반 사용법 vs 함수형 업데이트 방식
- 일반 사용법 → number가 1씩 증가
// src/App.js
import { useState } from "react";
const App = () => {
const [number, setNumber] = useState(0);
return (
<div>
{/* 버튼을 누르면 1씩 플러스된다. */}
<div>{number}</div>
<button
onClick={() => {
setNumber(number + 1); // 첫번째 줄
setNumber(number + 1); // 두번쨰 줄
setNumber(number + 1); // 세번째 줄
}}
>
버튼
</button>
</div>
);
}
export default App;
일반 업데이트 방식은 버튼을 클릭했을 때 첫번째 줄 ~ 세번째 줄의 있는 setNumber가 각각 실행되는 것이 아니라, 배치(batch)로 처리한다.
즉 우리가 onClick을 했을 때 setNumber 라는 명령을 세번 내리지만, 리액트는 그 명령을 하나로 모아 최종적으로 한번만 실행을 시킨다.
그래서 setNumber을 3번 명령하던, 100번 명령하던 1번만 실행된다.
- 함수형 업데이트 방식 → number가 3씩 증가
// src/App.js
import { useState } from "react";
const App = () => {
const [number, setNumber] = useState(0);
return (
<div>
{/* 버튼을 누르면 3씩 플러스 된다. */}
<div>{number}</div>
<button
onClick={() => {
setNumber((previousState) => previousState + 1);
setNumber((previousState) => previousState + 1);
setNumber((previousState) => previousState + 1);
}}
>
버튼
</button>
</div>
);
}
export default App;
함수형 업데이트 방식은 3번을 동시에 명령을 내리면, 그 명령을 모아 순차적으로 각각 1번씩 실행시킨다.
0에 1더하고, 그 다음 1에 1을 더하고, 2에 1을 더해서 3이라는 결과가 우리 눈에 보인다.
👉 useState의 업데이트 방식은 2가지 방식이 있으며, 각각 다르게 동작한다. useState 로 원시데이터가 아닌 데이터를 변경할때는 불변성을 유지해야 한다.
728x90
반응형
LIST
'기술 개발 > React' 카테고리의 다른 글
React에서 상태관리를 왜 할까? (0) | 2022.10.18 |
---|---|
리액트를 사용하는 이유 (0) | 2022.10.13 |
About Redux (0) | 2022.08.05 |
React Hooks(useEffect) (0) | 2022.08.04 |
컴포넌트 꾸미기 (CSS-in-JS) (3) | 2022.07.30 |