我该如何改进这个 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 }}
})
}
我有这个动作:
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 }}
})
}