함수형 컴포넌트에서 상태관리 시 useState를 사용하는 것 말고 다른 방법으로 useReducer를 사용하여 state를 관리할 수 있다. useReducer를 사용하면 컴포넌트의 상태 업데이트 로직을 컴포넌트에서 분리시킬 수 있고 상태 업데이트 로직을 컴포넌트 바깥에서 작성 할 수 있고 다른 파일에 작성 후 불러와서 사용할 수도 있다.
userReducer 첫번째 파라미터는 reducer 함수이고, 두번째 파라미터는 초기 상태이다.
useReducer를 이해하려면 리덕스의 리듀서를 이해해야 한다.
액션 발생 시 동작을 정의하는 reducer 함수를 따로 만들어 useReducer의 첫 번째 인자에 넣고 두번째로 initialState값을 넣어준다. 그리고 구조분해할당을 통해서 state와 dispatch를 가져와 이벤트 발생 시 dispatch를 통해 state를 관리한다.
useState vs useReducer
둘 중에 어떤 것을 사용해야될까?? 정해진 답은 없지만 컴포넌트에서 관리하는 값이 여러개가 되어서 상태의 구조가 복잡해진다면 useReducer로 관리하는 것이 편하다.