TypeError: undefined is not an object (evaluating 'this.props.data.map')
appBodyData:
render(){
let articles =this.props.data.map(function(articleData,index) {
return (
<Card>
<CardItem>
<Body>
<Text>
{articleData.address.city}
</Text>
</Body>
</CardItem>
</Card>
)
});
return (
<Content>
{articles}
</Content>
);
}
**[appBody:][1]**
getData(){
return fetch("https://jsonplaceholder.typicode.com/users")
.then((response) => response.json())
.then((responseJson) => {
this.setState({data:responseJson.array});
})
.catch((error) => {
console.error(error);
});
}
componentDidMount(){
this.getData();
}
render() {
return (
<AppBodyData data={this.state.data}/>
);
}
当我尝试在模拟器中运行时,会显示此错误。 如何修复此错误。 地图功能似乎无法获取数据。 反应本机 CLI 版本:50 SDK版本:23
因为您的抓取是异步的,所以在第一次渲染时this.props.data
是不确定的。
此外,您需要使用this.state.data
因为获取的结果是设置状态而不是 prop
首先在构造函数中设置初始状态:
constructor(props) {
super(props);
this.state = {
data: []
}
}
然后更改为状态
let articles =this.state.data.map(function(articleData,index) {
由于获取方法,您获得空值,获取数据需要时间,因此在 if 条件下呈现
render(){
return (
<Content>
{this.props.data?this.props.data.map((articleData,index)=>{
return <Card>
<CardItem>
<Body>
<Text>
{articleData.address.city}
</Text>
</Body>
</CardItem>
</Card>
}):null}
</Content>
);
}