首页 > 解决方案 > TypeError: .some 不是函数 React JS 错误

问题描述

const [userFavorites, setUserFavorites]= useState([]);这是我的代码的一部分,它将 userFavorites 的状态设置为一个数组,我在其他地方有一个函数试图做userFavorites.some并且我保留TypeError: userFavorites.some is not a function. 我很感激任何帮助!

标签: javascriptarraysreactjserror-handling

解决方案


如果您可以发布整个代码片段,那么回答将很有帮助。虽然你可能正在做这样的事情。

最初,它被声明为一个空数组[],但有可能在您的代码中某处您正在设置这样的状态。

  setUserFavorites(someDataFromAPICallORPostOperation).

在这里,您someDataFromAPICallORPostOperation可能是未定义的。

您可以通过两种方式解决此问题。

1.设置状态时默认为空数组。

  setUserFavorites(someDataFromAPICallORPostOperation ?? []).

undefined2.在调用.some函数之前检查。

userFavorites?.some(function) // Using optional chaining

或者

userFavorites && userFavorites.some(function)

编辑- 基于评论链接中提到的代码。

数组推送操作不会返回更新后的数组,而是返回更新后的数组中的元素个数。

这可以解决为

    function addFavoritesHandler(favoriteMeetup) {
        setUserFavorites(prevUserFavorites => {
            return [...prevUserFavorites, favoriteMeetup];
        });
    }

解释,早些时候你在做这样的事情。

    function addFavoritesHandler(favoriteMeetup) {
        setUserFavorites(prevUserFavorites => {
            return prevUserFavorites.push(favoriteMeetup);
        });
    }

在这里,您将状态设置为数字而不是数组,因为push将返回该数组中的元素数。因此,当您将 设置为数字而不是数组时,这样做userFavorites.some会引发错误。userFavorites


推荐阅读