es6 for循环不循环

es6 for loop not looping

我正在尝试让一个简单的 ES6 for 循环工作,但无法弄清楚为什么它不能 运行。

我已经从 developer.mozilla 文档中复制了一个示例,并且我还在下面的 eslinter 版本中进行了尝试:
我还添加了一个 let i = 0;多于。所有 renders/logs 都是 i = 0 并且不会递增。 eslint 版本在这里:eslint site

  for (i = 0; i < 10; i += 1) {
    console.log('i', i);
    return <p>component {i}</p>;
  }

编辑:好的,日志中返回的值是 i=0、i=1 等...但是要将它们分别放入一个组件中吗?我尝试了推入数组并通过映射来取出组件,但我没有收到任何错误,也没有出现任何东西,即使我只是尝试取出一个值。

const nbPageArray = [];
  let i = 0;
  for (i = 0; i < nbPages; i += 1) {
    console.log('i', i);
    nbPageArray.push(<p>component {i}</p>);
  }
  console.log('array', nbPageArray);
  nbPageArray.map(a => <p>{a.type}</p>);
}

最终工作版本:

const nbPageArray = [];
for (let i = 0; i < nbPages; i += 1) {
  nbPageArray.push({ page: i + 1 });
}
return nbPageArray.map(a =>
  <li className="page-item"><a className="page-link">{a.page}</a></li>,
);

如果你从你的 for 循环中 return,你将退出当前函数,你也会在每次循环中将 i 递增 10,所以无论哪种方式,你都会在一轮后退出循环。

如果您尝试打印值为 i 的字符串十次,您可以尝试使用如下模板字符串:

for (i = 0; i < 10; i += 1) {
  console.log('i', i);
  console.log(`<p>component ${i}</p>`);
}

您正在从循环返回并且递增 10。循环将只执行一次。

如评论中所述,for 循环内的 return 将在第一次迭代时退出函数。

您可以改为这样做:

const result = Array(10).fill().map((_, i) =>
  <p>component {i}</p>
);

或者

const result = [...Array(10)].map((_, i) =>
  <p>component {i}</p>
);

主要问题是i += 10;

应该是1 += 1;

你应该 return 元素数组:

var p_tags = [];
for (i = 0; i < 10;  i += 1) {
    console.log('i', i);
    p_tags.push(<p>component {i}</p>);
}
return p_tags;

已编辑问题的答案:

第一个错误:

const nbPageArray = []; 应该是 var nbPageArray = [];

其次,您没有 return 数组,因此请将您的代码更改为

return nbPageArray.map(a => <p>{a.type}</p>);