未定义不是对象


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>
);
}

相关内容

  • 没有找到相关文章

最新更新