gpt4 book ai didi

javascript - 我没有在React项目中定义for循环

转载 作者:行者123 更新时间:2023-11-28 11:20:26 26 4
gpt4 key购买 nike

有人知道为什么 i 没有在此循环中定义吗?我无法弄清楚...

我正在尝试对从 api 接收到的数据页面进行分页,并将其全部收集到一个数组中并将其存储在状态中,但我的 for 循环似乎无法工作,因为错误:“i is未定义”

我还应该怎么做呢???

gatherAllCharacters = () => {
fetch(`https://rickandmortyapi.com/api/character/`)
.then(res => res.json())
.then(data => {
let characters = data.results;
const totalPages = data.info.pages;
if (totalPages > 1) {
for (i = 2; i <= totalPages; i++) {
let page = i;
fetch(`https://rickandmortyapi.com/api/character/?page=${i}`)
.then(res => res.json())
.then(data => {
characters = characters.concat(data.results);
if (page === totalPages) {
this.setState({ allCharacters: characters });
}
});
}
} else {
console.log("none");
}
});
};

最佳答案

您可以像上面那样创建一个 for 循环

 for (i = 2; i <= totalPages; i++) {
//perform loop
}

然而,这会在全局命名空间中生成一个变量 i,这通常是一个坏主意。

因此你应该在使用它之前初始化 i,如下所示:

 for (let i = 2; i <= totalPages; i++) {
//perform loop
}

因此 ECMA 决定采用一种模式,在此模式(以及我的其他会导致不良副作用的功能)会抛出错误。

在这里查看更多https://www.w3schools.com/js/js_strict.asp

由于您的应用处于严格使用模式,它将抛出错误“i 未定义”

记住在使用变量之前先初始化它!

<小时/>

关于 letvar 你应该了解的几件事

  1. varlet 可以更改其值,而 const 无法更改其值
  2. var 可以在函数中的任何位置访问,但 letconst 只能在函数内部访问声明它们的 block

关于javascript - 我没有在React项目中定义for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com