【问题标题】:returning inside for loop breaks the loop返回内部 for 循环会中断循环
【发布时间】:2020-03-02 06:37:58
【问题描述】:

我正在尝试根据我的应用程序中的 pageCount 值呈现一定数量的 div。我的做法如下

render() {
  const { pageCount } = this.props;
  function renderPages() {
    for (let i = 0; i < pageCount; i++) {
      return <div>{i}</div>;
    }
  }
  return <div style={{ textAlign: "center" }}>{renderPages()}</div>;
}

所以这里pageCount 我得到的值是 5。我想渲染 5 个 div,但是返回时,循环中断。我该如何解决这个问题?

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

正如您所注意到的,由于return,您的循环提前中断。相反,您可以渲染一个 JSX 数组。一种方法是在您的 renderPages.push() 您的 &lt;div&gt;s 中创建一个数组:

function renderPages() {
  const divs = [];
  for (let i = 0; i < pageCount; i++){
    divs.push(<div>{i}</div>);
  }
  return divs;
}

return (
  <div style={{textAlign:'center'}}>
    {renderPages()}
  </div>
)

或者,您可以使用带有映射函数的Array.from() 填充数组:

function renderPages() {
  return Array.from({length: pageCount}, (_, i) => <div>{i}</div>);
}

return (
  <div style={{textAlign:'center'}}>
    {renderPages()}
  </div>
)

【讨论】:

    【解决方案2】:

    在 for 循环内返回总是会中断循环。因此,您可以改为使用 .map 阅读更多相关信息 here

    render(){
        const {pageCount} = this.props;
        function renderPages(){
            return new Array(pageCount).map((item, index) => (
                <div>{item}</div>
            ));
        }
        return (
            <div style={{textAlign:'center'}}>
                {renderPages()}
            </div>
        )
    }
    

    【讨论】:

    • pageCount 似乎是一个数字,而不是一个数组
    • 是的。 pageCount 不是数组。这是一个数字
    猜你喜欢
    • 2013-06-07
    • 2015-03-21
    • 2015-10-26
    • 1970-01-01
    • 2015-02-24
    • 2014-09-16
    • 2014-03-22
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多