action은 그냥 함수입니다.
action의 값은 달라졌는지, 안달라졌는지 둘중 하나의 결과를 만들어줍니다.
Pure Function으로 시간에 따라 값이 바뀌는 데이터는 넣으면 안된다고 하네요!
리덕스가 값을 인지하는 방식은 [Immutable]
리액트일 때[state,setState]=useState("")
state로 값이 바뀌고 받아오고 했지만
리덕스에서는 이걸 따로따로 객체 설정을 해야합니다.
위에서 말한 reducers(Pure Function)을 이용해서 state가 달라졌는지 체크하는 방식이기 때문이죠!
function toDoApp(previousState, action) {
return previousState;
// 어떠한 변화도 있지 않다면 previousState 리턴, action이 변경되도 previousState가 리턴될 것이다.
}
function toDoApp(previousState = [], action) {
// 초기값을 설정 해주는 부분
if (action.type === ADD_TODO) {
return [...previousState, action.todo];
}
return previousState;
// 어떠한 변화도 있지 않다면 previousState 리턴, action이 변경되도 previousState가 리턴될 것이다.
}
여기까지는 패스트캠퍼스 강의이지만 노마드코드 강의에서는 아래처럼 실습했었습니다
const countModifier = (count = 0, action) => {
console.log(count, action);
if (action.type === 'ADD') {
return count + 1;
} else if (action.type === 'MINUS') {
return count - 1;
} else {
return count;
}
};