스프린트/im-sprint-cmarket-redux

redux action

테오구 2021. 11. 2. 15:13
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