728x90
1-1. Action
action은 중앙 저장소에 저장된 state에 “무슨” 동작을 할 것이지 적어놓는 객체입니다. action에는 type이 필수로 필요합니다.
// action types
export const ADD_TO_CART = 'ADD_TO_CART'
export const REMOVE_FROM_CART = 'REMOVE_FROM_CART'
export const SET_QUANTITY = 'SET_QUANTITY'
export const NOTIFY = 'NOTIFY'
export const ENQUEUE_NOTIFICATION = 'ENQUEUE_NOTIFICATION'
export const DEQUEUE_NOTIFICATION = 'DEQUEUE_NOTIFICATION'
// actions creator functions
export const addToCart = itemId => {
return {
type: ADD_TO_CART,
payload: {
quantity: 1,
itemId,
},
}
}
export const removeFromCart = itemId => {
return {
//TODO
type: REMOVE_FROM_CART,
payload: {
itemId,
},
}
}
export const setQuantity = (itemId, quantity) => {
return {
//TODO
type: SET_QUANTITY,
payload: {
quantity,
itemId,
},
}
}
export const notify =
(message, dismissTime = 5000) =>
dispatch => {
const uuid = Math.random()
dispatch(enqueueNotification(message, dismissTime, uuid))
setTimeout(() => {
dispatch(dequeueNotification())
}, dismissTime)
}
export const enqueueNotification = (message, dismissTime, uuid) => {
return {
type: ENQUEUE_NOTIFICATION,
payload: {
message,
dismissTime,
uuid,
},
}
}
export const dequeueNotification = () => {
return {
type: DEQUEUE_NOTIFICATION,
}
}
728x90
'스프린트 > im-sprint-cmarket-redux' 카테고리의 다른 글
redux reducer (0) | 2021.11.02 |
---|---|
redux dispatch (0) | 2021.11.02 |