我没有为反应项目中的循环定义

m4rsib4r 0 javascript pagination reactjs

有没有人知道为什么我没有在这个循环中定义?我想不明白...

我试图通过从API接收数据的页面进行分页,并都聚集到一个数组,并将其存储在状态,但我对循环似乎并不奏效,因为错误的:"没有定义我"

我该怎么办呢?

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");
        }
      });
  };

用户甲.. 5

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

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

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

因此你应该在使用它之前初始化我:

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

因此,ECMA决定采用这种方式(以及我的其他可能导致不良副作用的功能会引发错误).

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

当您的应用程序处于使用严格模式时,它将抛出错误"我未定义"

记得在使用之前初始化任何变量!


结合你应该了解的事情letvar

  1. var并且let可以改变它们的值并且const不能改变它的值
  2. var可以在功能上随时随地访问,但letconst只能在那里它们被声明的块内访问.