代码之家  ›  专栏  ›  技术社区  ›  Barry Michael Doyle

基于数字渲染多个元素,而不是通过数组映射

  •  1
  • Barry Michael Doyle  · 技术社区  · 7 年前

    我发现自己陷入了一个 integer 表示页数和组件 <Page> 这需要道具 pageNumber .

    renderPages() {
      for (let i = 1; i < this.state.numPages; i++) {
        return <Page pageNumber={1} />;
      }
    }
    

    这个 renderPages 函数在我的类中实现如下 render 功能:

    render() {
      return (
        <div>
          {this.renderPages()}
        </div>
      );
    }
    

    我知道一旦第一次返回 已退出。所以最后它只呈现第一页。如何在此处呈现更多页面?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Barry Michael Doyle    7 年前

    https://stackoverflow.com/a/51335795/9206753 (我先前的回答)

    要循环多次并返回,可以借助 from map :

      <div>
        {Array.from(Array(this.state.numPages)).map((item, index) =>
          <Page key={index} pageNumber={index + 1} />
        )}
      </div>
    

        2
  •  1
  •   Roopak PutheVeettil    7 年前
    renderPages() {
        const arr = []
      for (let i = 1; i <-this.state.numPages; i++) {
        arr.push(<Page pageNumber={1} />)
      }
        return arr
    }
    
    render() {
      return (
        <div>
          {this.renderPages().map((item)=>(item))}
        </div>
      );
    }
    
        3
  •  1
  •   Anurag Awasthi    7 年前

    renderPages() {
        const arr = []
      for (let i = 1; i <-this.state.numPages; i++) {
        arr.push(<Page pageNumber={1} />)
      }
        return arr
    }
    

    也可以通过创建空数组而不使用函数,

    render() {
      return (
        <div>
          {(new Array(this.state.numPages)).map((item, i)=><Page pageNumber={i} />)}
        </div>
      );
    }