2017-04-18 11 views
0

Ich versuche, die Antwort von einer GET-Anfrage (die ein Array von Objekten ist), und setzen Sie ihren Zustand auf ein Array 'Vorlagen', so dass ich später damit zugreifen kann. state.templates, etwa so:React Native this2.state Fehler

fetch('https://tiy-warmup.herokuapp.com/api/templates?token=' + 
    token) 
    .then(response => response.json()) 
    .then(response => this.setState({templates: response})) 
    // .then(response => console.log(response)) 

Als ich die setState Linie Kommentar gesetzt haben und trösten nur die Antwort einzuloggen, erhalte ich die richtige Array zurück, so dass ich weiß, dass meine holen ist gut. Allerdings, wenn ich versuche, die setState Linie zu laufen, ich diesen Fehler:

Possible Unhandled Promise Rejection (id: 0): 
_this2.setState is not a function 

Was wäre, um diesen Fehler eine Lösung zu bekommen und in der Lage this.state.templates in den Render zu benutzen?

Antwort

0

Implementierung Überall dort, wo Sie verwenden diese holen, entweder die Funktion binden oder Funktion Pfeil ändern. this wird nicht an die Komponente gebunden, daher gibt this.setState einen Fehler aus. Der Unhandle-Verweigerungsverweigerungsfehler wird angezeigt, da Sie keine Catch-Anweisung eingerichtet haben, um Fehler zu behandeln.

+0

Thank you! Pfeilfunktion hat funktioniert. –

0

Possible Unhandled Promise Rejection

Dieser Fehler tritt auf, weil Sie nicht catch auf Ihrem Versprechen

.catch(error => { 
    console.log('There has been a problem with your fetch operation: '+ error.message); 
}); 
0

_this2.setState is not a function, in der Regel, das ist nicht die Referenz für Sie Komponente, starten Sie Ihren Debugger und sorgfältig überprüfen, was this Ref ist. Ich denke, Sie können bind oder const self = this verwenden, um dieses Problem zu lösen.

einen Blick auf diesen Beitrag kann Ihnen helfen, https://www.sitepoint.com/bind-javascripts-this-keyword-react/