代码之家  ›  专栏  ›  技术社区  ›  CraZyDroiD

返回内部for循环会打破循环

  •  -1
  • CraZyDroiD  · 技术社区  · 5 年前

    我试图根据 pageCount 我在应用程序中的价值。我的方法如下

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

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

    0 回复  |  直到 5 年前
        1
  •  3
  •   Nick Parsons Felix Kling    5 年前

    正如你所注意到的,由于 return 。相反,您可以渲染JSX数组。一种方法是在您的 renderPages .push() 你的 <div> 其中包括:

    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
  •  0
  •   void    5 年前

    在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>
        )
    }