Action객체가 Dispatch함수의 인자로 전달
Dispatch함수는 Action객체를 Reducer함수로 전달
Reducer함수는 Action객체의 값을 확인하고, 그 값에 따라 전역상태 저장소 Store의 상태변경
상태가 변경되면, React는 화면을 다시 렌더링
즉, Action -> Dispatch -> Reducer -> Store 순서로 데이터가 단방향으로 흐름
import { createStore } from 'redux';
const store = createStore(rootReducer);
순수함수
여야한다.combineReducers
메서드를 사용해 하나로 합쳐줄 수 있다.import { combineReducers } from 'redux';
const rootReducer = combineReducer({
counterReducer,
anyReducer,
...
});
{ type: 'INCREASE' } // payload가 필요없는 경우
{ type: 'SET_NUMBER' , payload: 5 } // payload가 필요한 경우
- 여기서 type은 필수로 지정해 주어야한다.
-> 해당 Action객체가 어떤 동작을 하는지 명시해주는 역할
-> 대문자와 Snake Case로 작성
-> 필요에 따라 payload를 작성해 구체적인 값 전달.
- 보통 Action을 직접 작성하기보다는 Action객체를 생성하는 함수를 만들어 사용
-> 이러한 함수를 액션생성자(Action Creator)
라고도 한다.
// Action 객체를 직접 장성하는 경우
dispatch({ type: 'INCREASE' });
dispatch({ type: 'SET_NUMBER' , payload: 5 });
// 액션 생성자를 사용하는 경우
dispatch( increase() );
dispatch( setNumber(5) );
- Action 객체를 전달받은 Dispatch함수는 Reducer를 호출.
React-Redux
에서 Redux를 사용할 때 활용할 수 있는 Hooks메서드 제공useSelector()
, useDispatch()
이 두가지를 기억.useDispatch()
import { useDispatch } from 'react-redux'
const dispatch = useDispatch()
dispatch( increase() )
console.log(counter) // 2
dispatch( setNumber(5) )
console.log(counter) // 5
useSelector()
// Redux Hooks 메서드는 'redux'가 아니라 'react-redux'에서 불러옵니다.
import { useSelector } from 'react-redux'
const counter = useSelector(state => state)
console.log(counter) // 1