2016-11-04 4 views
0

私はこの作用を有する:どのように私はこのreduxアクションクリエイターを改善することができますか?

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 }} 
    }) 
} 

彼の行動は、支払いを作成します。カテゴリが存在しない場合は作成されます。

しかし、私は、アクションで2つの店舗を変更するのはうれしいことではないことを読んだ。だから、誰も私がこの行動を改善する方法を知っている?

答えて

1

"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 }} 
    }) 
} 
+0

非常に素晴らしいです!ありがとう! –

関連する問題