리덕스는 상태관리 라이브러리 중 하나로 여러가지 상태관리 라이브러리 중 가장 많이 활용
Store 라는 변수를 이용하여 전역 상태관리
스토어를 사용하면 상태를 조회하기 간편하고 관리하는 것 또한 간편
React에서 불필요한 props를 전달하고 자식 컴포넌트가 다시 자식 컴포넌트에게 props를 전달하게 되는 불필요한 props 전달을 막을 수 있음 (props-drilling)
상태를 변화시키기 위해 변화에 대한 정보가 필요한 액션은 상태 변화에 대해 알려주는 순수 JS객체
액션 객체는 상태 변화에 대한 type을 필수로 갖고 있어야 하고
액션의 type은 액션의 행위를 나타내는 문자열
{ type : "ADD_TODO", todo : [] }
{ type : "CHECK_TODO", id : 1 }
상태와 액션을 가지고 함수를 실행하는 역할
두 가지 인자 - 1. 이전 상태릐 정보 2. 액션 객체
액션에 대한 함수를 정의하고 함수를 실행해서 상태를 업데이트
디스패치는 액션을 실행시키는 역할을 하고 액션을 인자로 받게됨
1. 디스패치로 액션을 실행 ex) dispatch(action)
2. 리듀서는 이전 상태와 액션 객체를 받아 스토어 상태를 업데이트 ex) reducer(prevState, action)
파일을 구조 중심이 아닌 기능 (모듈) 중심으로 파일을 나누는 것
ducks 패턴을 사용하게 되면 코드가 직관적이고 읽기 쉽게 사용할 수 있게 됨