TypeError: .some Is not A Function React JS Error
TypeError: .some Is not A Function React JS Error
const [userFavorites, setUserFavorites]= useState([]);
这是我的代码的一部分,它将 userFavorites 的状态设置为一个数组,我在其他地方有一个函数试图做 userFavorites.some
并且我保留 TypeError: userFavorites.some is not a function
.感谢您的帮助!
如果您可以 post 整个代码片段,那么这将有助于回答。虽然你可能正在做这样的事情。
最初,它被声明为一个空数组[]
,但有可能在您的代码中某处设置了这样的状态。
setUserFavorites(someDataFromAPICallORPostOperation).
在这里,您的 someDataFromAPICallORPostOperation
可能未定义。
您可以通过两种方式解决此问题。
1.设置状态时默认为空数组。
setUserFavorites(someDataFromAPICallORPostOperation ?? []).
2。在调用 .some
函数之前检查 undefined
。
userFavorites?.some(function) // Using optional chaining
或
userFavorites && userFavorites.some(function)
编辑 - 基于评论中提到的代码 link.
数组 push 操作不是 return 更新的数组,而是 return 更新的数组中的元素数。
这可以解决为
function addFavoritesHandler(favoriteMeetup) {
setUserFavorites(prevUserFavorites => {
return [...prevUserFavorites, favoriteMeetup];
});
}
说明,您之前做过类似的事情。
function addFavoritesHandler(favoriteMeetup) {
setUserFavorites(prevUserFavorites => {
return prevUserFavorites.push(favoriteMeetup);
});
}
此处您将状态设置为数字而不是数组,因为 push
将 return 该数组中的元素数。因此,在执行 userFavorites.some
时它会抛出错误,因为您将 userFavorites
设置为数字而不是数组。
const [userFavorites, setUserFavorites]= useState([]);
这是我的代码的一部分,它将 userFavorites 的状态设置为一个数组,我在其他地方有一个函数试图做 userFavorites.some
并且我保留 TypeError: userFavorites.some is not a function
.感谢您的帮助!
如果您可以 post 整个代码片段,那么这将有助于回答。虽然你可能正在做这样的事情。
最初,它被声明为一个空数组[]
,但有可能在您的代码中某处设置了这样的状态。
setUserFavorites(someDataFromAPICallORPostOperation).
在这里,您的 someDataFromAPICallORPostOperation
可能未定义。
您可以通过两种方式解决此问题。
1.设置状态时默认为空数组。
setUserFavorites(someDataFromAPICallORPostOperation ?? []).
2。在调用 .some
函数之前检查 undefined
。
userFavorites?.some(function) // Using optional chaining
或
userFavorites && userFavorites.some(function)
编辑 - 基于评论中提到的代码 link.
数组 push 操作不是 return 更新的数组,而是 return 更新的数组中的元素数。
这可以解决为
function addFavoritesHandler(favoriteMeetup) {
setUserFavorites(prevUserFavorites => {
return [...prevUserFavorites, favoriteMeetup];
});
}
说明,您之前做过类似的事情。
function addFavoritesHandler(favoriteMeetup) {
setUserFavorites(prevUserFavorites => {
return prevUserFavorites.push(favoriteMeetup);
});
}
此处您将状态设置为数字而不是数组,因为 push
将 return 该数组中的元素数。因此,在执行 userFavorites.some
时它会抛出错误,因为您将 userFavorites
设置为数字而不是数组。