我正在學習ReactJS以製作一個需要Jquery從服務器提取遠程JSON數據的Web應用程序。當我嘗試手動將JSON數據放入App.js時,該Web應用程序正常工作,但在嘗試提取遠程JSON數據時發生錯誤無法讀取屬性「polls」Null。在Reactjs構造函數中使用Jquery提取JSON數據時,無法讀取Null屬性
這裏是app.js與手動放在JSON數據:
import React, { Component } from 'react';
import Polls from './Components/Polls';
import './App.css';
import $ from 'jquery';
class App extends Component {
constructor(){
super();
this.state = {
polls: [
{
survey_id: 1,
choice1_votes: 4,
choice1_text: "Kanye",
choice1_image:"https://a.web.site/kanye.jpg",
choice2_votes: 5,
choice2_text:"Eminem",
choice2_image:"https://a.web.site/eminem.jpg"
},
{
survey_id: 2,
choice1_votes: 7,
choice1_text: "Football",
choice1_image:"https://a.web.site/football.jpg",
choice2_votes: 2,
choice2_text: "Soccer",
choice2_image:"https://a.web.site/soccer.jpg"
}
]
};
console.log(this.state);
}
render() {
return (
<div className="App">
My App
<Polls polls={this.state.polls}/>
</div>
);
}
}
export default App;
當我嘗試改變this.state使用jQuery獲得提取的數據...
constructor(){
super();
$.getJSON('sample.json', function (data) {
this.state = {data};
});
}
...我收到一個錯誤無法讀取屬性'民意調查'的空。
如何解決此錯誤?
它不會出現componentDidMount()曾運行。我剩下一個對象:{polls:[null]}。我應該把它稱爲什麼地方? – Ethernetz
不,你不需要調用,在內部執行'console.log('called')',一旦組件第一次呈現就會被調用。 –
請提供downvote的原因。 –