2016-07-14 8 views
0

Ich möchte ein Ereignis haben, das ausgelöst wird, wenn ich bestimmte Daten von der Serverseite erhalte.React - Ereignis für Aktionsergebnis erhalten

Ich versuchte mit componentWillReceiveProps aber wenn der Server die gleichen Daten zurückgibt, wird dieses Ereignis nicht getroffen werden. Welches Ereignis kann ich verwenden? Ich möchte das Ereignis selbst dann starten, wenn die empfangenen Daten identisch sind.

Mein Minderer:

import * as constActions from './remediationConstActions'; 
import initialState from './initialState'; 

export default function alertsPageReducer(state=initialState, action){ 
    switch(action.type){ 
     case constActions.SEND_TO_SOC_SUCCESS: 
     { 
      return Object.assign({}, state, 
       { 
       remediationResult: 
        action.remediationResult 
       }); 
     } 
     default: 
      return state; 
    } 
} 

In meiner Komponente:

function mapStateToProps(state, ownProps) { 
    return { 
     remediationResult: state.remediation.remediationResult 
    }   
} 

componentWillReceiveProps(nextProps) { 
    console.log('remediationDidReceiveResult:' + this.nextProps.remediationDidReceiveResult);   
} 

Was ist die Lösung?

+2

Dies ist vielleicht eine dumme Frage, die ich stellen möchte, aber warum müssen Sie die Komponente erneut rendern, wenn sich nichts geändert hat? Enthält es einen Zeitstempel? Übergeben Sie in diesem Fall einfach den Zeitstempel als Requisite? – ivarni

+0

@ivarni Es ist ein Popup, und selbst wenn der Benutzer zweimal auf dieselbe Schaltfläche klickt, ist das Ergebnis dasselbe. Aber ich möchte wissen, dass das Ergebnis kam, bevor ich das Popup zeige. Ich bin nicht 100% sicher, dass ich es richtig strukturiert, aber es funktioniert gut anders als dieses Problem – omriman12

+0

@ivarni lässt sagen, ich füge den Zeitstempel, jetzt habe ich ein anderes Problem, in dem Fall möchte ich wissen, woher ich kam, wie kann ich weißt du das? Ich möchte wissen, welche Aktion die Requisiten verändert – omriman12

Antwort

0

Sie können zu Ihrem Redux Reducer einen Zähler hinzufügen und ihn jedes Mal erhöhen, wenn Reducer aufgerufen wird.

return { 
    ...state, 
    remediationResult: action.remediationResult, 
    version: state.version + 1 } 

Also, wenn Sie diese gegen eine Stütze verbinden, in componentWillReceiveProps könnten Sie Ihre version Zahlen vergleichen und einen Handler aufrufen, wenn sie sich ändert.

Verwandte Themen