我正在学习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的原因。 –