gpt4 book ai didi

javascript - React-native:未定义不是一个对象

转载 作者:行者123 更新时间:2023-12-03 00:09:23 24 4
gpt4 key购买 nike

可能这是一个新手问题...我收到一个 json 响应,其中包含来自 fetch() 的对象,该对象运行到 componentDidMount() 上的函数中。结果保存到状态中

    data: 
{
id: 1,
name: 'joseph',
tickets:
[
{id: 334, descripton: 'example1'},
{id: 768, descripton: 'example2'},
],
}

我需要在render()中列出这个数组“tickets”。

componentDidMount(){
this.getFetch(...);
}

showTickets(WTickets){
console.log(WTickets);
WTickets.map((item)=>{
return (item.id)
})
}

render(){
return(
<View>
{this.showTickets(this.state.data.tickets)}
</View>
)
}

但是“第一次返回”是“未定义”,产生错误,然后状态更改为正确结果。提取正在使用异步等待运行,但仍然首先显示“未定义”。

console.log 显示 2 个结果:一个“未定义”,另一个包含结果。

有好心人可以帮帮我吗?

最佳答案

这是因为一开始 this.state.data.tickets 是未定义的,并且您在渲染函数中调用它,而渲染函数不会等到 this.getFetch() 完成。所以..你可以做一个条件渲染来检查渲染中是否存在this.state.data.tickets

替换{this.showTickets(this.state.data.tickets)}

{this.state.data!==未定义? this.showTickets(this.state.data.tickets) : null}

我们在这里所做的是首先检查 this.state.data.tickets 是否未定义。当它未定义时(在开始时)我们返回 null,当它不再未定义时我们调用 this.showTickets。

你甚至可以将 this.state.data 初始化为一个空数组,当我们检查它是否未定义时,你可以删除该部分,因为空数组将返回 false

constructor() {
super();
this.state = {
data: []
};
}
....
....
//in render function
{this.state.data? this.showTickets(this.state.data.tickets) : null}
...

关于javascript - React-native:未定义不是一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54815335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com