useState如何遍历数组

亚伦·艾德温(Aaron Erdwyn)

我对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:[]})正在初始化favoritedListobject

previousFavoritedinsetFavoritedList是is的当前值favoritedList,即object因此,您尝试在...上使用object,该数组不能像数组一样重复且无效。

我的建议是使用useState([])初始化favoritedList为普通数组,然后可以将其视为数组。

如果确实必须使用objectfor favoritedList,则解决方案是返回一个对象,以保持对象结构的一致性:

return { favorited: [favoritedElement, ...previousFavorited.favorited] }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章