2016-11-21 3 views
0

Ein Call-to-Action (Backend-Aufruf) Antwort ist ein Array - hier undefiniert - in wenigen anderen Fällen, wo ich über das Array Mappe ich sehe Karte von undefinierten Fehler als Gut. Ist componentDidMount der richtige Ort, um solche Anrufe zu tätigen?undefiniert innerhalb der Reaktionskomponente - aber nicht in Aktion

Ich bekomme die Antwort zurück, wenn ich den Aktionsersteller vor dem Versand anmelde.

+0

vermutlich 'fetchData' ist asynchron rechts? also wird es in der nächsten Zeile nicht so sein – azium

+0

siehe diese Frage und akzeptierte Antwort. Ich denke, Sie finden es hilfreich https://stackoverflow.com/questions/39381378/whats-the-best-way-to-deal-mit-undefined-props-in-react-js –

Antwort

1

Es ist nicht definiert, da die Anforderung nicht zu dem Zeitpunkt, als Sie versuchen, die Antwort zu protokollieren, ausgeführt wurde - es ist asynchron.

können Sie entweder rufen Sie die Aktion hier:

componentDidMount() { 
    this.props.fetchData(test, foo); 
} 

componentWillReceiveProps(props) { 
    if (props.responseData) { console.log(props.responseData); } // should be getting the data if the request works 
} 

oder einen Rückruf definieren, die nach ausgeführt wird die Anforderung erfolgreich war.

+0

ja Sie haben Recht, ich verstehe der Wert jetzt in der

{this.props.data}
Ich sehe einen Fehler kurz davor für einen Bruchteil der Sekunde Ich sehe Fehler Bildschirm 'undefined' - wie stelle ich sicher, in reactjs, wenn Requisiten nicht leer ist ... wie Requisiten hinzufügen. responseData zu Konstruktor/getInitialstate etc.? – monkeyjs

+0

Versuchen Sie '

{this.props.data ? this.props.data : ''}
'. Grundsätzlich möchten Sie überprüfen, ob es nicht definiert ist, wenn es nicht angezeigt wird. –

+0

versucht, dass, ich sehe immer noch den roten Bildschirm für eine Sekunde, bevor die Seite lädt - und eine Fehlermeldung .... bundle.js: 76754 Uncaught TypeError: Kann nicht lesen Eigenschaft 'Daten' von undefined (...) – monkeyjs

0

Ich denke, Ihr fetchData()Promise zurückkehrt, die Sie also async

ist, kann Daten aus componentWillReceiveProps() erhalten, die aufgerufen wird, wann immer Sie neue Requisiten haben.

componentWillReceiveProps(nextProps){ 
    console.log(nextProps.responseData); //do whatever you want with response 
} 

Seit componentDidMount() wird nur einmal aufgerufen. Es ist kein zuverlässiger Ort, um etwas mit Ihrem props zu tun.

Verwandte Themen