首页 > 解决方案 > 如何在 for 循环中创建动态状态?

问题描述

我有颜色数组,每种颜色都有一个画廊。我想为这些画廊创建和管理状态,所以我可以轻松地为画廊添加/删除图像。

我有这样的代码

var imgArr = new Array(colors.length)
for (var i = 0; i < colors.length; i++) {
    imgArr[i] = colors[i].imgs
    const [gallery[i], setGallery[i]] = React.useState()
    setGallery[i](imgArr[i])
}

const [gallery[i], setGallery[i]] = React.useState()不起作用。

如何解决这个问题?

标签: javascriptreactjsjsx

解决方案


不要在循环中写这个:

const [gallery[i], setGallery[i]] = React.useState()

语法错误。您可以使用这样的画廊状态:

const [galleries, setGalleries] = useState([]);

然后:

setGalleries(colors.map((color) => color.imgs));

沙盒:https ://codesandbox.io/s/stupefied-roentgen-xk9zc?file=/src/App.js:547-600 。希望这能回答你的问题。


推荐阅读