javascript - 如何在 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()
不起作用。
如何解决这个问题?
解决方案
不要在循环中写这个:
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 。希望这能回答你的问题。
推荐阅读
- java - isInterrupted() 未触发
- c# - JSON解析检查数组中是否存在值
- python - 将新列添加到 groupby 结果
- css - CSS 问题:无法为图像行添加边距(React JS)
- html - HuBL / Twig:用于循环重复相同内容(替代需要中断)
- javascript - Javascript:在引用元素之后将元素插入数组
- python - 可以将大型数据集的总和向量化到数组的特定记录元素上吗?
- unity3d - 如何使 Unity DOTS Physics Ray cast 与 ECS 配合使用?
- python - 如何使用 python 通过 tweet-ID 获取旧推文?
- python - 如何返回到我在 TkInter 中“销毁”的上一个窗口?