【问题标题】:TypeError: .some Is not A Function React JS ErrorTypeError: .some 不是函数 React JS 错误
【发布时间】:2021-12-04 18:14:52
【问题描述】:

const [userFavorites, setUserFavorites]= useState([]); 这是我的代码的一部分,它将 userFavorites 的状态设置为一个数组,我在其他地方有一个函数尝试执行userFavorites.some,我保留TypeError: userFavorites.some is not a function。感谢您的帮助!

【问题讨论】:

  • 如果你 console.log userFavorites 它返回什么。看来可能不是数组
  • 请显示更多您的代码。任何可以改变用户最爱的东西,尤其是

标签: javascript arrays reactjs error-handling


【解决方案1】:

如果您可以发布整个代码 sn-p 那么这将有助于回答。虽然你可能正在做这样的事情。

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

  setUserFavorites(someDataFromAPICallORPostOperation).

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

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

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

  setUserFavorites(someDataFromAPICallORPostOperation ?? []).

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

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

userFavorites && userFavorites.some(function)

编辑 - 基于注释链接中提到的代码。

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

这个可以解决

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

说明,之前你在做这样的事情。

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

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

【讨论】:

  • pastebin.com/rLHT3i9V 这是创建userFavorites的js文件和使用其他js文件的js文件的代码。
  • @Airlo 我已经更新了答案。请参阅此答案末尾的Edit 部分。
猜你喜欢
  • 2020-07-29
  • 2020-12-23
  • 1970-01-01
  • 2020-04-17
  • 2020-09-20
  • 2016-06-19
  • 2014-11-18
  • 2018-12-24
相关资源
最近更新 更多