mongodb 未捕获的类型错误:在useEffect中使用map函数时,无法读取undefined的属性(阅读“map”)

vojdkbi0  于 2022-12-18  发布在  Go
关注(0)|答案(2)|浏览(163)
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

如果选定的用户已经是朋友,我想将按钮显示为取消朋友。我正在尝试使用Map函数查找用户是否已经是朋友。但Map函数显示为错误

j2cgzkjk

j2cgzkjk1#

在我看来,currentUser已定义,但没有属性currrentUser.friends。请尝试currentUser?.friends?.map(...)
并将else子句改为always return,如果调用了return setFriend(true),则不会调用return friend(false),但在所有其他情况下都会调用。

xqnpmsa8

xqnpmsa82#

因为你有if语句,我们已经知道currentUser存在,所以你必须看看currentUser是否有朋友。然而map应该被用来创建一个新数组,你用它来迭代朋友。你可以用some来简化整个useEffect

useEffect(() => {
  setFriend(
    currentUser &&
      currentUser.friends?.some((friends) => friends._id === currentProfile._id)
  );
}, [currentUser, currentProfile]);

如果currentUser是一个值,并且朋友与currentProfile具有相同的ID

相关问题