我对useState的(希望)基本功能有以下问题,但我还没有得到。我想获得所有以前编写的任务的待办事项清单。我尝试通过两种方式解决该问题:
第一种方法:
const [ favoritedList, setFavoritedList ] = useState([]);
const handleFavoritedVideo = (favoritedElement) => {
setFavoritedList((previousFavorited) => {
return [ favoritedElement, ...previousFavorited ];
});
};
一切正常。
但是当我尝试做这样的事情时:
const [ favoritedList, setFavoritedList ] = useState({favorited:[]});
const handleFavoritedVideo = (favoritedElement) => {
setFavoritedList((previousFavorited) => {
return [ favoritedElement, ...previousFavorited ];
});
};
我收到以下错误:
TypeError:previousFavorited不可迭代
为什么会这样以及如何解决呢?
useState({favorited:[]})
正在初始化favoritedList
为object
。
previousFavorited
insetFavoritedList
是is的当前值favoritedList
,即object
。因此,您尝试在...
上使用object
,该数组不能像数组一样重复且无效。
我的建议是使用useState([])
初始化favoritedList
为普通数组,然后可以将其视为数组。
如果确实必须使用object
for favoritedList
,则解决方案是返回一个对象,以保持对象结构的一致性:
return { favorited: [favoritedElement, ...previousFavorited.favorited] }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句