2017-08-13 5 views
0
componentDidMount() { 
    $.ajax({ 
     type: "GET", 
     url: "/tweets", 
     dataType: "json", 
     success: function (data){ 
      //$('#tweetsList').append(data); 
      this.setState({tweetsList: data}); 
     }, 
     error: function (error) { 
      console.log(error); 
     } 
    }); 
} 

der obige Code-Block gibt mir eine this.setState Funktion nicht gefunden Fehler. Ich versuche, Json von meinem Tweets-Controller zu meiner main.jsx-Datei zu rendern.this.setState keine Funktion Schienen

+0

der Kontext dieser Änderungen in der Ajax-Aufruf. Sie müssen auf den ursprünglichen Kontext verweisen. Antwort schreiben. –

Antwort

1

Der Kontext von this ändert sich im Ajax-Aufruf. this bezieht sich nicht mehr auf Ihre Komponente. Sie müssen auf den ursprünglichen Kontext verweisen.

componentDidMount() { 
    const self = this; 
    $.ajax({ 
     type: "GET", 
     url: "/tweets", 
     dataType: "json", 
     success: function (data){ 
      //$('#tweetsList').append(data); 
      self.setState({tweetsList: data}); 
     }, 
     error: function (error) { 
      console.log(error); 
     } 
    }); 
} 
+0

Danke. Die Seite wird ohne Fehler gerendert. Von der Steuerung werden jedoch keine Daten gerendert. –

+0

ist das, weil Sie '$ ('# tweetList') auskommentiert haben. Append (data)'? –

+0

Nein. es ist nicht verwandt. Meine Index-Methode in den Tweets Controller sieht wie folgt aus: def Index \t \t @tweets = Tweet.all \t \t machen json: Tweet.all \t Ende –

0

Das Problem ist this in Ihrem Erfolg Callback-Funktion bezieht sich auf die Funktion und daher keine setState Methode hat. Sie können Kontext jQuery Ajax-Aufruf wie folgt passieren:

$.ajax({ type: "GET", url: "/tweets", dataType: "json", context: this, success: function (data){ //$('#tweetsList').append(data); this.setState({tweetsList: data}); }, error: function (error) { console.log(error); } });

jQuery ajax docs über Kontexteigenschaft Siehe für weitere Informationen.

+0

Danke. Die Seite wird ohne Fehler gerendert. Von der Steuerung werden jedoch keine Daten gerendert. –

Verwandte Themen