프로젝트 규모가 커질수록 상태를 관리하기 힘들어지는데 Redux는 복잡한 구조 속에서도 쉽게 상태 관리를 해주는 라이브러리입니다.
action은 Store에 운반할 데이터를 말합니다.
action은 객체 형식으로 되어있고, type은 필수이며 payload에 필요한 옵션 또는 값들을 담을 수 있습니다.
dispatch( ) 에서 action을 보내주며 reducer를 호출합니다. 이때 reducer가 action을 가지고 기존의 상태를 새로운 상태로 만들어줍니다.
Redux에서 Store는 상태를 관리하는 공간이라 합니다.
필요에 따라 Store안에 상태를 담고 , 수정하고 , 가져오고 , 삭제할 수 있습니다.
현재 상태 트리를 리턴합니다. 마지막으로 reducer 함수가 리턴한 값과 동일합니다.
store.getState( )
상태를 관리할 Store를 만들어주는 역할을 하고 인자값에는 상태를 수정할 수 있는 reducer 함수가 들어갑니다.
CombineReducers를 사용할 경우 인자값에 CombineReducers를 넣어주면 됩니다.
const store = createStore(reducer);
페이지가 복잡하여 reducer 함수에 너무 많은 양을 담아놓으면 괸리하기 복잡하고 코드를 이해하기 어려우니 reducer 함수를 각 기능별로 여러개 나눠서 작업할 때 사용합니다.

rootReducer를 만들어 combineReducers( )를 사용하여 각 기능마다 reducer를 나눠서 객체 형식으로 담아두었습니다.