Reactjs “未定义”不是筛选平面列表时的对象

Reactjs “未定义”不是筛选平面列表时的对象,reactjs,firebase,native,Reactjs,Firebase,Native,我试图在react native中过滤一些数据,但是当数据来自JS文件时,当它们来自firebase DB时,它会说“undefined不是对象(评估MeasuresList.filter)” 这是密码 <FlatList style={styles.flatList} data = {ExercisesList.filter(item => item.muscle === "shoulders")}} keyExtract

我试图在react native中过滤一些数据,但是当数据来自JS文件时,当它们来自firebase DB时,它会说“undefined不是对象(评估
MeasuresList.filter
)”

这是密码

<FlatList style={styles.flatList}
          data = {ExercisesList.filter(item => item.muscle === "shoulders")}}
          keyExtractor={(item) => item.id}
          renderItem={({ item }) => 
                     {item.name}
                        }
                    />
item.muscle==“肩部”)}
keyExtractor={(项)=>item.id}
renderItem={({item})=>
{item.name}
}
/>
如果我删除过滤部分,进入屏幕,我可以看到包含所有练习的平面列表,如果我添加过滤部分并保存,我可以看到过滤后的元素,它可以工作。问题是,当我添加了筛选代码时,我无法进入此页面,即使它似乎有效,为什么在进入屏幕之前“
MeasuresList.filter
”未定义?

请尝试以下操作:

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

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

[未定义的不是对象]表示未定义MeasuresList。在这种情况下,[exerciseList.filter]与[undefined.filter]相同

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

{ExercisesList? ExercisesList.filter(item => item.muscle === "shoulders") : []}
请让我知道它是否适合你。
谢谢。

非常感谢!信息技术worked@AymanNasreddin你应该接受这个答案,然后这也起作用了,但是你在我删除的肩膀后面添加了一个“}”。谢谢!哦,是的。是我的错。非常感谢D