【发布时间】:2019-07-20 15:50:33
【问题描述】:
我有一个父组件执行 AJAX 调用以获取 JSON 对象。我做了一些 console.log 来确保父组件中的数据是正确的,但是当我通过 props 时,我得到一个值:
ƒ data() {
return _this.state.data;
}
到目前为止,我所做的似乎很简单,所以我找不到问题所在。
父组件:
class InfoBox extends Component {
state = {
data: []
};
componentDidMount = () => {
this.loadDonationsFromServer();
setInterval(this.loadDonationsFromServer, this.props.pollInterval);
};
loadDonationsFromServer = () => {
$.ajax({
url: "https://jsonplaceholder.typicode.com/comments",
dataType: "json",
cache: false,
success: data => {
this.setState({ data });
},
error: (xhr, status, err) => {
console.error(status, err.toString());
}
});
};
render = () => {
return (
<React.Fragment>
<h1>Information</h1>
<InfoList
data={() => this.state.data}
/>
</React.Fragment>
);
};
}
export default DonationBox;
子组件:
class InfoList extends Component {
constructor(props) {
super(props);
this.state = {
data: this.props.data
};
}
componentDidMount() {
console.log(this.state.data);
//logs: ƒ data() {
// return _this.state.data;
// }
}
render() {
return <div> Placeholder </div>;
}
}
export default InfoList;
我尝试在子组件中使用绑定,但仍然得到同样的结果:
constructor(props) {
super(props);
this.state = {
data: this.props.data
};
this.checkData = this.checkData.bind(this);
}
componentDidMount() {
this.checkData();
}
checkData = () => {
console.log(this.state.data);
};
【问题讨论】:
-
在您的父组件中,您声明了一个类
InfoBox,但导出了一个类DonationBox- 这只是一个错字,对吧?
标签: javascript json ajax reactjs