리덕스를 배우기 전 리액트에서 state에 대한 이해가 중요하다.
결국엔 리덕스도 상태 관리(전역)하는 툴이기 때문에 state를 잘 아는 것은 중요하다.
또한 리덕스는 리액트의 Context API 기반으로 만들어졌기 때문에 Context API를 먼저 학습하고 온다면 더 이해가 쉬울 것으로 생각한다.
그럼 시작해보자!
Local State
Cross-Component State
App-Wide State
Context의 잠재적 단점
리덕스의 작동 방식
const counterReducer = (state = initialState, action) => {
if (action.type === 'increment') {
return {
counter: state.counter + 1,
// showCounter 값은 기존 상태를 유지해야함
showCounter: state.showCounter
}
}
}
왜 상태를 직접 변경하는 형태는 안될까?
const counterReducer = (state = initialState, action) => {
if (action.type === 'increment') {
state.counter++
return state
}
}
useState와 마찬가지로 리덕스 또한 state를 직접 변경하면 안된다.
새로운 state 객체를 반환해서 항상 재정의 해줘야함!
객체와 배열은 참조값이기 때문에 직접 state를 변경하면 계속해서 원본 state를 변형시킨다
절대 state를 직접 변경하지말고, 항상 새 객체 값을 생성해야함!