액션(Action)
- 하나의 객체로 표현
type
필드를 필수적으로 가지고 있어야하고 나머지는 자유자재로 넣을 수 있음.
{
type: "ADD_TODO",
data: {
id: 0,
text: "리덕스 배우기"
}
}
액션 생성 함수
- 액션을 만드는 함수, 파라미터를 받아와 액션 객체형태로 리턴
export function addTodo(data){
return {
type: "ADD_TODO",
data
};
}
// 화살표 함수로도 만들 수 있습니다.
export const changeInput = (text) => ({
type:"CHANGE_INPUT",
text
});
- 보통 함수를 export시켜서 다른 파일에서 불러옴.
Reducer
- 변화를 일으키는 함수로 두개의 파라미터를 받아옴
function reducer(state, action){
//상태 업데이트
return alteredState
}
- 리듀서는 상태값과, 전달받은 액션을 참고해 새로운 상태값을 리턴
- 예를들면 state값을 action type에 따라 다르게 로직을 구현하고 싶다
function counter(state, action){
switch(action.type){
case 'INCREASE': return state +1;
case 'DECREASE': return state -1
default: return state
}
}
- 주의해야할점. 리덕스에서는 default 처리를 기존 state를 반환하도록 해야함.
Store