React - 动态渲染一定数量的组件

新手上路,请多包涵

我想根据用户获得的点数( this.state.points )显示一些组件星(MUI组件)。

我不知道该怎么做。

 import React, { Component } from "react";
import { Star } from "@material-ui/icons";

Points extends Component {
  constructor(props) {
  super(props);
    this.state = {
      points: 6
    };
  }

  render() {
     return (
       <div>
         <p>
           + {this.state.points} points
           <Star />
         </p>
       </div>
     );
    }
  }

export default Points;

原文由 Charlote22 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
2 个回答

您可以使用 Array.fill 创建新阵列 this.state.points 空插槽数,然后用 <Star /> 组件填充,如下所示:

 import React, { Component } from "react";
import { Star } from "@material-ui/icons";

class Points extends Component {
  constructor(props) {
    super(props);
    this.state = {
      points: 6
    };
  }

  render() {
    return (
      <div>
        <p>
          + {this.state.points} points
          // This is where the magic happens
          {Array(this.state.points).fill(<Star />)}
        </p>
      </div>
    );
  }
}

export default Points;

这是一个工作沙箱: https ://codesandbox.io/s/vj3xpyn0x0

原文由 user3210641 发布,翻译遵循 CC BY-SA 4.0 许可协议

尝试这个

import React, { Component } from "react";
import { Star } from "@material-ui/icons";

Points extends Component {
constructor(props) {
super(props);
this.state = {
  points: 6
 };
}

render() {
 return (
   <div>
     <p>
       + {this.state.points} points

       {Array.from(Array(this.state.points)).map((x, index) => <Star key={index} />)}
     </p>
    </div>
  );
  }
}

export default Points;

原文由 Kishan Mundha 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题