2017-08-13 97 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); 
     } 
    }); 
} 

上面的代碼塊給了我一個this.setState函數找不到的錯誤。我試圖從我的Tweets控制器呈現json到我的main.jsx文件。this.setState不是函數rails

+0

ajax調用中此更改的上下文。您需要引用原始上下文。寫答案。 –

回答

1

在ajax調用中更改this的上下文。 this不再指您的組件。您需要引用原始上下文。

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

謝謝。頁面呈現沒有任何錯誤。但是,沒有數據從控制器呈現。 –

+0

是因爲你已經註釋掉$('#tweetList')。append(data)'? –

+0

不是。這是無關的。在鳴叫控制器我的索引方法如下所示:DEF指數 \t \t @tweets = Tweet.all \t \t渲染JSON:Tweet.all \t年底 –

0

的問題是你成功的回調函數this指功能,因此沒有任何setState方法。你可以通過上下文jQuery的AJAX調用是這樣的:

$.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約上下文屬性以獲得更多信息。

+0

謝謝。頁面呈現沒有任何錯誤。但是,沒有數據從控制器呈現。 –

相關問題