首页 > 解决方案 > 无法读取未定义的属性“日期” - 仅当 FlatList

问题描述

我有一个奇怪的问题。过程:

1)我在useEffect中从api获取一个对象数组meetings

useEffect(() => {
        trackPromise(
            bookingContext.getUserMeetings(state.token, state.userId),
            "getUserMeetings"
        );
}, []);

2)如果他的渲染(所以第一次渲染是空的 - 并且在useEffect之后从“MeetingContext”获取数组,我会渲染数组

{bookingContext.state.userMeetings.length > 0 ? (
   <View style={styles.container}>
      <Text>{bookingContext.state.userMeetings[0].date}</Text>.............

到目前为止它有效

现在,当我将最后一行更改为( bookingContext.state.userMeetings[0].date} ) 这样的平面列表时:

<FlatList
    data={bookingContext.state.userMeetings}
    renderItem={({ meet }) => (
        <Text>{meet.date}</Text>
    )}
    keyExtractor={meet => meet._id}
/>

并尝试呈现他告诉我“TypeError:无法读取未定义的属性'日期'” 他不在乎我的条件或什么都不在乎......它只是粉碎。

4) **我在 react-promise-tracker 中用于加载并用它包装使用效果。

问题:为什么使用平面列表它不起作用并且在常规语法中(如第 2 部分)它起作用。

问题2:有没有办法告诉react先等到使用效果中的promise完成,然后他完成渲染数组?

标签: javascriptreact-native

解决方案


推荐阅读