export const addToCart = (itemId) => {
return {
type: ADD_TO_CART,
payload: {
itemId,
quantity: 1,
},
}
}
const dispatch = useDispatch()
dispatch(addToCart(item.id))
dispatch(removeFromCart(itemId))
dispatch(notify(`장바구니에 ${item.name}이(가) 추가되었습니다.`))
const store = createStore(rootReducer)
// createStore 메소드를 활용해 rootReducer를 연결
const itemReducer = (state, action) => {
switch (action.type) {
case ADD_TO_CART:
return Object.assign({}, state, {
// Object.assign() : immutable한 방식으로 변경하기
cartItems: [...state.cartItems, action.payload]
})
default:
return state;
}
}
Reducer의 Immutability(불변성)
: Redux는 변경된 state를 로그로 남기기 위해 immutable한 방식으로 변경해야 함
*mutable하게 고치면 기존 state가 어땠는지에 대한 트래킹 불가
const state = useSelector((state) => state.itemReducer)