
props drilling 을 겪게 되는데, 앱의 구조가 복잡해질 수록, 컴포넌트의 깊이가 깊어질수록 props drilling 이 심각해진다.store 에서 전역 상태를 관리할 수 있어서 상태를 끌어올려주고, 내려주는 상황을 피할 수 있어 과도한 props drilling 을 피할 수 있다.Action 객체 생성Action 객체는 Dispatch 함수의 인자로 전달Dispatch 함수가 Action 객체를 Reducer 함수로 전달Reducer 함수는 Action 객체의 값을 확인Store 의 상태 변경Store 안 상태가 변경되면 React는 화면을 다시 렌더링
type 은 필수로 지정// type 은 필수로 지정
{ type : "ADD" }
// 필요에 따라 새로운 키와 값을 만들 수 있다.
{ type : "ADD" , id: Date.now() }
Action 객체를 생성하는 함수를 만들어 사용하는 경우가 많다.// 액션 생성자 Action Creater
const add = () => {
return {
type: 'ADD',
id : Date.now(),
}
}Reducer 함수로 Action 을 전달해주는 함수Dispatch 함수의 인자는 Action 객체Dispatch 함수는 Reducer 함수 호출import { useDispatch } from 'react-redux';
const dispatch = useDispatch();
// 액션 생성자 함수 전달
dispatch(add());
// 액션 객체 전달
dispatch({ type : "ADD" , id: Date.now() });
Dispatch 에게 전달받은 Action 객체의 type 값에 따라 상태를 변경시키는 함수Reducer 함수는 순수 함수이어야 한다.Reducer 함수를 만들 수 있다.state 가 저장되어 있는 공간createStore 메서드Store 를 생성할 수 있다.createStore 메서드의 인자로 Reducer 함수를 넣어 연결해야 한다.Reducer 함수가 변경해야 하는 상태를 가져오기 때문useSelectorstate 연결state 에 접근할 수 있게 해준다.useDispatchAction 객체를 Reducer 함수로 전달해주는 메서드Single source of truth, 단일 진실 공급원
동일한 데이터는 항상 같은 곳에서 가져와야 한다. ex) Store
State is read-only, 상태는 읽기전용이다.
Redux의 상태를 직접 변경하는 것이 아닌 Action 객체를 통해서만 상태를 변경해야 한다.
Changes are made with pure functions, 변화는 순수함수를 통해서
Reducer 함수를 순수함수로 작성해야 한다.