未捕获的类型错误:在 useEffect 中使用 map 函数时无法读取未定义的属性(读取“map”)
2022-12-13
56
useEffect(() => {
if(currentUser){
currentUser?.friends.map(friends => {
if(friends._id===currentProfile._id){
return setFriend(true)
}
})
}else{
return setFriend(false)
}
},[currentUser,currentProfile])
//currentUser is the user logged in
//currentProfile is user selected
如果选定的用户已经是好友,我想将按钮显示为“取消好友”。我正在尝试使用地图功能来查找用户是否已经是好友。但地图功能显示为错误
2个回答
在我看来,
currentUser
已定义,但没有属性
currrentUser.friends
。
尝试
currentUser?.friends?.map(...)
并将
else
子句更改为始终返回。如果调用了
return setFriend(true)
,则不会调用
return friend(false)
,但在所有其他情况下都是如此。
patrickhrastnik
2022-12-13
由于您有 if 语句,我们已经知道 currentUser 存在,因此您必须查看 currentUser 是否有朋友。
但是,应该使用 map 来创建新数组,您可以使用它来迭代朋友。您可以改用
some
来简化整个 useEffect
useEffect(() => {
setFriend(
currentUser &&
currentUser.friends?.some((friends) => friends._id === currentProfile._id)
);
}, [currentUser, currentProfile]);
如果 currentUser 是一个值,并且朋友的 id 与 currentProfile 相同
Disco
2022-12-13