리덕스에는 액션이라는 개념이 존재합니다
상태에 변화가 필요할 때 액션을 발생시킵니다
{
type: "click"
}
위와 같이 액션 객체는 type을 필수로 가지며 그외의 값은 마음대로 넣을 수 있습니다
{
type: "click",
name: "jikwan"
}
말 그대로 액션을 만드는 함수를 뜻함
export function addTodo(data) {
return {
type: "ADD_TODO",
data
};
}
// 화살표 함수로도 만들 수 있습니다.
export const changeInput = text => ({
type: "CHANGE_INPUT",
text
});
리덕스에 액션 생성 함수를 필수적으로 사용해야하는 것은 아니며 직접 액션 객체를 생성해도 됩니다.
변화를 일으키는 함수
state
, action
두가지 파라미터를 받음
function reducer(state, action) {
// 상태 업데이트 로직
return alteredState;
}
useReducer와 똑같은 형태를 지니고 있음
//ex
function counter(state, action) {
switch (action.type) {
case 'INCREASE':
return state + 1;
case 'DECREASE':
return state - 1;
default:
return state;
}
}
useReducer에서는 default:
에 thorw new Error()
와 같이 에러를 발생시키는 반면 리덕스에서는 기존 state
를 반환