[React.js] useReducer
컴포넌트 내부에 새로운 state를 생성하는 react hook 종류 중 하나로
useState를 대체해서 쓸 수 있음
그럼 useState와 다른 점이 있는가?
→ Yes. useReducer는 상태 관리 코드를 컴포넌트 외부로 분리 가능
useState는 컴포넌트 내부에 상태 관리 코드들이 계속 추가가 되어 길고 복잡해짐
https://mm-study-front.tistory.com/43
[React.js] React Hooks
클래스 컴포넌트의 기능을 함수 컴포넌트에서 사용할 수 있도록 도와주는 메서드 과거에는 클래스 컴포넌트만 모든 기능을 이용할 수 있었고, 함수 컴포넌트는 UI 랜더링만 가능했었음→ 근
mm-study-front.tistory.com
https://mm-study-front.tistory.com/38
[React.js] State
사물이 현재 가지고 있는 형태나 모양 사물에 따라 현재 상태는 다르고, 상태를 바꿀 수도 있음 리액트 컴포넌트는 State를 가지고 있음한 컴포넌트에 state를 여러 개 가지고 있을 수도 있음
mm-study-front.tistory.com
우선
선언 필요
이렇게 써주면 된다
이 때 dispatch는 한국말로 하면 발송하다, 급송하다으로
상태 변화가 있어야 한다는 사실을 알리는 발송하는 함수이다.
즉 useReducer 사용하려면
상태 변화를 실제로 처리하는 함수를 만들어야 함
이 함수는 컴포넌트 외부에 배치해도 작동함!!
버튼을 누를 때마다 값이 늘었다가 줄어드는 컴포넌트에 useReducer를 사용한다면
이렇게 완성 위의 코드처럼 if 식들이 길어질 때는 간단하게 switch문을 이용해서 처리하자
정리해 보면
useState, useReducer 모두 컴포넌트 내부에 새로운 state를 생성하는 react hook이다
그러나 useState는 state를 처리하는 코드를 컴포넌트 내부에 넣어야 하고
useReducer는 state를 처리하는 코드를 컴포넌트 외부에 배치시켜도 된다 그러나!!! 상태가 변환하는 함수를 직접 function을 이용해 선언해주어야 한다
즉 state 처리가 간단할 때는 컴포넌트 내부에 위치하는 state를 쓰는 게 나을 거 같고
state 처리 코드가 길어지거나 복잡해질 때는 useReducer를 사용해서 컴포넌트 내부에 위치한 코드를 줄이고, if나 switch문을 이용해 처리하자