2016-09-19 3 views
3

Use Case url nach erfolgreichem api Aufruf ändern:Wie in Saga

Nach Benutzer abonniert ich zu einer anderen Seite navigieren mag, dass informiert den Benutzer ihre E-Mails zu überprüfen.

try { 
    const request = yield call(subcribe, action.payload.data) 
    yield put({ type: SUBSCRIBE_SUCCESS, payload: request.data }) 
    yield put(showNotification(NOTIFICATION_SUCCESS, 'Please check your email.')) 
    } catch(e) { 
    ... 
    } 

gibt es eine Möglichkeit zum Erfolg Seite d.h /subscribe-success zu navigieren, wenn ich eine erfolgreiche Antwort vom Server erhalten haben?

Antwort

3

Wenn Sie eine Erfolgsantwort von Ihrem Server erhalten, sollten Sie Ihren redux-Status in etwas wie subsribeSuccess ändern: true. Sie haben also die Möglichkeit, diesen Status in der Komponente componentWillReceiveProps (nextProps) der Komponente zu überprüfen und browserHistory.push ('subscribe-success') auszuführen. Hier

ein Beispiel:

Angenommen, Sie Ihren redux Zustand geändert haben {... Zustand, subscribeSuccess: true} aus Druckminderer, wenn Ihr Minderer SUBSCRIBE_SUCCESS Aktionstyp bekommt.

Auf Ihrem reagiert Komponente:

componentWillReceiveProps(nextProps){ 
    if(myConnectedReduxState.subscribeSuccess){ 
    browserHistory.push('subscribe-success'); 
    } 
} 

So soweit ich verstand, ist Ihr Problem zu Saga nicht verwendet. Sie können diese Logik überall in Ihren react-redux-Projekten implementieren.

+2

ja du bist richtig es war nicht spezifisch für die saga. Vielen Dank für Ihre Antwort. Es erlaubte mir, die Push-Funktion innerhalb des React-Routers zu verwenden, dh 'importieren {push} von 'react-router-redux'' und ändern dann den Speicherort wie folgt: yield put (push (' subscribe- Erfolg ')) '. Ich habe auch Ihre vorgeschlagene Logik in der Komponente implementiert, um eine andere Ansicht zu rendern. Danke noch einmal! – Cnolimit