在 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);
我正在创建一个动态对象,所以这是 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);