<Query
query={FETCH_EVENTS}>
{
({data, error, loading }) => {
if (loading) return null;
if (error) {
console.error(error);
return <Text>An error occured</Text>;
}
if (!data.allEvents) return null;
return(
<FlatList
style={{flex: 1}}
data={data.allEvents}
renderItem={({ item }) => {
<EventCard
event={item}
key={item.id}
latitude={latitude}
longitude={longitude}
/>
}}
keyExtractor={item => item.id}
/>
)
}
}
</Query>
上面的代码突然由于没有明显的原因而停止工作,我不明白为什么FlatList不再渲染项目。
当我直接用以下组件替换FlatList时,它可以工作并呈现,因此问题不应与该组件有关,而应与FlatList有关。
return(
<EventCard
event={data.allEvents[0]}
key={data.allEvents[0].id}
latitude={latitude}
longitude={longitude}/>
)
答案 0 :(得分:3)
您忘记了返回 renderItem
中的语句尝试
<FlatList
style={{flex: 1}}
data={data.allEvents}
renderItem={({ item }) => {
return(
<EventCard
event={item}
key={item.id}
latitude={latitude}
longitude={longitude}
/>);
}}
keyExtractor={item => item.id}
/>
或
<FlatList
style={{flex: 1}}
data={data.allEvents}
renderItem={({ item }) =>
<EventCard
event={item}
key={item.id}
latitude={latitude}
longitude={longitude}
/>
}
keyExtractor={item => item.id}
/>
以上两种解决方案都应该有效
答案 1 :(得分:2)
您没有归还EventCard
renderItem={({ item }) => (
<EventCard
event={item}
key={item.id}
latitude={latitude}
longitude={longitude}
/>
)}
代替
renderItem={({ item }) => {
<EventCard
event={item}
key={item.id}
latitude={latitude}
longitude={longitude}
/>
}}