Dieser Fehler tritt normalerweise auf, wenn versucht wird, innerhalb einer Rückruffunktion, an die nicht gebunden ist, auf this.setState zuzugreifen den richtigen Kontext. In React bezieht sich dies auf die Komponenteninstanz und es ist wichtig, den richtigen Kontext für den Zugriff auf ihre Methoden wie setState beizubehalten.
Im angegebenen Codeausschnitt tritt das Problem innerhalb der Rückruffunktion des VK-API-Aufrufs auf:
VK.api('users.get',{fields: 'photo_50'},function(data){ if(data.response){ this.setState({ //the error happens here FirstName: data.response[0].first_name }); console.info(this.state.FirstName); } });
Die Rückruffunktion ist in einem anderen Bereich definiert und bezieht sich nicht auf die Komponenteninstanz. Um dieses Problem zu lösen, ist es notwendig, die Callback-Funktion an den richtigen Kontext zu binden:
VK.api('users.get',{fields: 'photo_50'},function(data){ if(data.response){ this.setState({ //the error happens here FirstName: data.response[0].first_name }); console.info(this.state.FirstName); } }.bind(this));
Indem wir die Callback-Funktion daran binden, stellen wir sicher, dass sich diese auf die Komponenteninstanz innerhalb des Callbacks bezieht, was uns dies ermöglicht Greifen Sie auf this.setState zu.
In einigen Fällen kann es notwendig sein, sowohl die Initiierung als auch die API-Aufrufe zu binden:
VK.init(function(){ console.info("API initialisation successful"); VK.api('users.get',{fields: 'photo_50'},function(data){ if(data.response){ this.setState({ //the error happens here FirstName: data.response[0].first_name }); console.info(this.state.FirstName); } }.bind(this)); }.bind(this), function(){ console.info("API initialisation failed"); }, '5.34');
Dadurch wird sichergestellt, dass sich dies während des gesamten Prozesses auf die Komponenteninstanz bezieht , einschließlich der Initiierung und API-Aufrufe.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „this.setState ist keine Funktion' in der Reaktion beim Binden von Rückruffunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!