我该如何改进这个 redux action creator?

How can i improve this redux action creator?

我有这个动作:

import uuid from 'uuid'
import { findPaymentCategoryByName } from './Categories/selectors'
import { addPaymentCategory } from './Categories/actions'

export const addPayment = payment => (dispatch, getState) => {
  const id = uuid.v1()
  const { paymentCategory, ...paymentValues } = payment
  let existentPaymentCategory = findPaymentCategoryByName(getState(), paymentCategory.name)

  if(!existentPaymentCategory) {
    existentPaymentCategory = dispatch(addPaymentCategory(paymentCategory)).payload
  }

  dispatch({
    type: 'ADD_PAYMENT',
    payload: { payment: { ...paymentValues, id, paymentCategoryId: existentPaymentCategory.id }}
  })
}

他的操作产生了一笔付款。当类别不存在时,创建它。

但是我读到说一个动作换两家店不太好。那么,有人知道我该如何改进这个动作吗?

可以遵循以下原则:"Tell-Don't-Ask" 方法"findPaymentCategoryByName"可以调用"paymentCategoryByName"类目不存在则自己负责创建

有关 TellDontAsk 的更多详细信息,请点击此处: http://martinfowler.com/bliki/TellDontAsk.html

export const addPayment = payment => (dispatch, getState) => {
  const id = uuid.v1()
  const { paymentCategory, ...paymentValues } = payment
  let existentPaymentCategory = PaymentCategoryByName(getState(), paymentCategory.name)

  dispatch({
    type: 'ADD_PAYMENT',
    payload: { payment: { ...paymentValues, id, paymentCategoryId: existentPaymentCategory.id }}
  })
}