React useReducer Hook 사용하기
Numble의 챌린지를 하면서 useReducer Hook을 사용하게 되었다.
공식문서의 내용을 간단하게 정리하고 내가 실제로 구현한 예시 코드를 정리하려고 한다.
useReducer?
useReducer
는 useState
의 대체 함수이다.
(state, action) => newState의 형태로 reducer를 받고 dispatch 메서드와 짝의 형태로 현재 state를 반환한다.redux
의 reducer를 하나의 컴포넌트에서 사용한다고 생각하면 된다.
장점
useReducer
는 다수의 하윗값을 포함하는 복잡한 정적 로직을 만드는 경우
나 다음 state가 이전 state에 의존적인 경우
에 useState
대신 사용하면 좋다.
또한 useReducer
는 콜백 대신 dispatch를 전달 하여 자세한 업데이트를 트리거 하는 컴포넌트의 성능을 최적화할 수 있게 한다.
또한 useMemo
와 lazy initial state
가 가능하다.
예시
reducer.ts에 reducer를 작성해주었다.
1 | const reducer = (state: GameType, action: Action): GameType => { |
그 후 export하고 컴포넌트에서 다음과 같이 호출하여 사용할 수 있다.
1 | const [gameState, dispatch] = useReducer(reducer, initialState); |