2017-06-15 1 views
0

In meinem aktuellen Projekt sind einige der Komponenten zustandsbehaftet. Einige Statuseigenschaften hängen vom Ergebnis der Dispatch-Methode ab.Auf die Antwort des Versands hören

this.props.dispatch({ 
    type: Constants.CONTRACT_DELETE_START, 
    payload: { 
    contract: contract 
    } 
}); 

Im Grunde brauche ich eine Antwort von diesem zu erhalten, etwa so:

this.props.dispatch({ 
    type: Constants.CONTRACT_DELETE_START, 
    payload: { 
    contract: contract 
    } 
}) 
.catch(err => { 
    this.setState({ 
    foo: "bar" 
    }); 
}) 

Ist es möglich, es zu tun, ohne foo: bar Logik zum Redux Speicher tragen zu müssen?

Ps. Ich benutze Redux Saga für meine Aktionen.

+0

Sie sprechen über Sagas, aber stellen Sie Ihren redux saga Code nicht zur Verfügung. Könnten Sie bitte zeigen, was Sie bisher dort versucht haben? – Andru

Antwort

1

Ich bin nicht sicher über das Versprechen, was (wie in Saga zu lösen oder zu verwerfen), aber Sie können auch wie folgt tun:

this.props.dispatch({ 
    type: Constants.CONTRACT_DELETE_START, 
    payload: { 
    contract: contract, 
    callback:() => { 
     // Do your stuff here 
    } 
    } 
}) 

einen Rückruf übergeben Sie hier und rufen Sie diese in Ihrer Saga je auf deine Logik.

+0

Normalerweise möchten Sie, dass Ihre Aktionen serialisierbar bleiben, d. H. Nur einfache Objekte und keine Callback-Funktionen enthalten, so dass Dinge wie das Debuggen von Zeitreisen usw. weiter funktionieren. – Andru

Verwandte Themen