- 리엑트에서 가장 많이 사용하는 리액트 상태 관리 라이브러리
- Context API로도 가능하지만 프로젝트 규모에 따라서 결정하는 것이 좋음
- 개발자 도구를 지원 한다는 장점과 미들웨어를 통해서 비동기 처리를 쉽게 가능하다는 장점 존재
- 상태에 변화가 필요하면 액션이 발생
- 하나의 객체로 표현됨
- 일반 객체
{ type: "TOGGLE_VALUE"; }
액션 객체는 type 필드를 반드시 가지고 있어야함
이를 액션 이름이라고 생각하면 됨
- action creator
- 액션 객체를 만들어 주는 함수
function addTodo(data) {
return {
type: "ADD_TODO",
data,
};
}
변화를 나타내야 할 때 마다 액션 객체를 생성해야함
하지만 이 과정에서 실수로 정보를 놓칠 수 있기 때문에
함수로 만들어서 관리한다!!!
- reducer
- 변화를 일으키는 함수
- 액션을 만들어서 발생 -> 리듀서가 현재 상태와 전달받은 액션 객체를 파라미터로 받아옴
- 현재 상태, 액션 객체를 참고하여 새로운 상태를 만들어서 반환해줌
-
reducer
-
프로젝트에 리덕스를 적용하기 위해 생성
-
한 프로젝트에 스토어는 하나만 존재 가능!!!
-
스토어
- 현재 애플리케이션 상태, 리듀서 들어있음
- 내장 함수 포함
- dispatch
- 스토어의 내장 함수 중 하나
- 액션을 발생시키는 것 이라고 이해
dispatch(action)과 같은 형태로 액션 객체를 파라미터로 넣어서 호출
이 함수가 호출되면 스토어는 리듀서 함수를 실행시켜 새로운 상태를 만들어줌
- subscribe
- 스토어의 내장 함수 중 하나
- 리스터 함수를 파라미터로 넣어서 호출 시 액션이 dispatch 되어서 상태가 업데이트 할 때 마다 호출