过滤平面列表时未定义不是对象

Undefined is not an object while filtering a Flatlist

我正在尝试在 React Native 中过滤一些数据,但是当数据来自 JS 文件时它可以工作,当它们来自 firebase 数据库时它说“undefined is not an object (evaluating MeasuresList.filter )"

这是代码

<FlatList style={styles.flatList}
          data = {ExercisesList.filter(item => item.muscle === "shoulders")}}
          keyExtractor={(item) => item.id}
          renderItem={({ item }) => 
                     {item.name}
                        }
                    />

如果我删除过滤器部分并进入屏幕,我可以看到包含所有练习的平面列表,如果我添加过滤器部分并保存,我可以看到过滤的元素并且它有效。问题是我添加了过滤代码后无法进入这个页面,即使它看起来有效,为什么在我进入屏幕之前“MeasuresList.filter”未定义?

尝试以下:

Array.isArray(MeasuresList) && MeasuresList?.filter

您还应该将 MeasuresList 的默认值设置为 []

[Undefined is not an object] 表示,MeasuresList 未定义。在这种情况下,[ExercisesList.filter] 与 [undefined.filter] 相同。

因此您应该检查 MeasuresList 是未定义的还是已定义的值。

{ExercisesList? ExercisesList.filter(item => item.muscle === "shoulders") : []}

请告诉我它是否适合您。 谢谢