在 setState 中使用 for 循环的索引

Use index from for loop inside setState

我正在创建一个动态对象,所以这是 for 循环:

for (let i = 1; i <= numOfPages; i++) {
    setDefinedPages(prevState => ({...prevState, i: {limit: partLimit, start: i }}))
}

想法是让 definedPages 状态对象类似于此示例:

1: {
  limit: 5,
  start: 1
},
2: {
  limit: 5,
  start: 2
}

但我无法在 setState 中访问 i,该对象直接写入 i 没有任何值。我也试过:

setDefinedPages((prevState, i) => ({...prevState, i: {limit: partLimit, start: i }}))

但没有任何效果,我想这是预期的行为,可能是由于 setState 挂钩的范围。是否有任何解决方法来捕获当前索引?

感谢任何帮助,干杯

更新: 就在遇到 Post 问题之前,我发现这可能是由于循环内的闭包。我仍然无法让它工作。

试试这样的东西:

const ObjectArray = [];
const numOfPages = [1,2,3,4];
let x = 0;
numOfPages.map((el,i) => {
  ObjectArray.push( {limit: "5",start: i })
  x++;
})
console.log(ObjectArray);
console.log(ObjectArray[0])
console.log(ObjectArray[1])
...
setDefinedPages(ObjectArray);