2016-04-06 12 views
1

Hier ist eine Funktion, die ich gerade habe. Ein Handler, der drei verschiedene Aktionen ausführen kann.Dispatching in Redux basierend auf Status

Ich möchte es so, dass ich hier auf den Zustand zugreifen kann, auf diese Weise kann ich nur die binChangedAction feuern, wenn state.bin !=== bin dies möglich ist oder sollte es innerhalb der reducer getan werden?

export function handleChangeDispatcher (dispatch) { 
    return (inputId) => (event) => { 
    let data = cleanHandleChangeEvent(inputId, event) 
    dispatch(formChangeAction(data)) 
    if (data.cardNumber) dispatch(creditCardChangeAction(data.cardNumber)) 
    if (data.cardNumber && data.cardNumber >= 6) dispatch(binChangedAction(getBin(data.cardNumber))) 
    } 
} 

Antwort

4

Verwenden Sie redux-thunk. Es löst diesen Anwendungsfall genau. Aus der Liesmich:

function incrementIfOdd() { 
    return (dispatch, getState) => { 
    const { counter } = getState(); 

    if (counter % 2 === 0) { 
     return; 
    } 

    dispatch(increment()); 
    }; 
} 
+0

Ich verstehe wirklich nicht, wie diese 'incidentIfOdd' Funktion im Zusammenhang mit einem' mapDispatchToProps' verwendet wird? http://stackoverflow.com/questions/36461139/accessing-getstate-from-within-action-creators- using-redux-thunk – ThomasReggi

+0

'incrementIfOdd' ist ein Beispiel asynchrone Aktion Creator-Funktion. Sie können es an das Redux-Dienstprogramm bindActionCreators übergeben, um es beim Aufruf automatisch zu versenden oder es manuell zu binden und zu versenden. Der Ansatz, den Sie in dieser Frage versuchen, ist nicht korrekt. – markerikson

Verwandte Themen