我一直在尝试通过状态将 API 调用获得的数据发送到子组件,但它似乎不起作用。
我一直将对象的每个单独属性作为道具发送给子组件。
有没有办法将整个 JSON 响应作为道具发送给子组件?
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {
data: {},
name: ""
};
}
componentWillMount() {
this.getWeather();
}
getWeather(city) {
fetch(
`https://api.apixu.com/v1/current.json?key=2da827a3ce074ddb85417374xxxxxx&q=paris`
)
.then(res => res.json())
.then(data => {
this.getData(data);
})
.catch(err => {
return Promise.reject();
});
}
getData(data) {
var location = data.location.name;
this.setState({ data: data, name: location });
console.log(this.state.name);
console.log(this.state.data);
}
render() {
return <Child name={this.state.name} data={this.state.data} />;
}
}
class Child extends React.Component {
render() {
var data = this.props.data;
return (
<div>
<h1>{this.props.name}</h1>
<h1> {data.current.cloud}</h1>
</div>
);
}
}
ReactDOM.render(<Parent />, document.getElementById("root"));
我希望数据对象也被传递给孩子,但它没有,我得到一个崩溃屏幕,指出数据对象未定义。
有没有办法将 API 调用中获得的整个 JSON 作为道具发送给子组件?