javascript - Insert dynamically a React component in a div - Stack Overflow

I'd like to insert dynamically several React ponent in a div HTML element. Every time that I clic

I'd like to insert dynamically several React ponent in a div HTML element. Every time that I click on button, I would like to add a new PeriodButtonContainer inside div with id="container".

This is what I've tried so far:

class Period extends React.Component {
  addPeriodHandler = () => {
    /****?????******/
  };

  render() {
    return (
      <div>
        <div id="container">
          <PeriodButtonContainer />
        </div>
        <div>
          <button id="addPeriod" onClick={this.addPeriodHandler}>
            Add a period
          </button>
        </div>
      </div>
    );
  }
}

Thanks in advance

I'd like to insert dynamically several React ponent in a div HTML element. Every time that I click on button, I would like to add a new PeriodButtonContainer inside div with id="container".

This is what I've tried so far:

class Period extends React.Component {
  addPeriodHandler = () => {
    /****?????******/
  };

  render() {
    return (
      <div>
        <div id="container">
          <PeriodButtonContainer />
        </div>
        <div>
          <button id="addPeriod" onClick={this.addPeriodHandler}>
            Add a period
          </button>
        </div>
      </div>
    );
  }
}

Thanks in advance

Share Improve this question edited Jul 11, 2018 at 21:23 Tholle 113k22 gold badges208 silver badges197 bronze badges asked Jul 11, 2018 at 21:19 M.MorrisM.Morris 1473 silver badges13 bronze badges 1
  • you should increment a counter in your state, create an array of the length of the counter and map it to your element – Axnyff Commented Jul 11, 2018 at 21:22
Add a ment  | 

1 Answer 1

Reset to default 6

You could keep a counter that you increment on each button click, and create that many PeriodButtonContainer ponents in your render method with e.g. Array.from.

Example

class Period extends React.Component {
  state = { periods: 1 };

  addPeriodHandler = () => {
    this.setState(previousState => {
      return { periods: previousState.periods + 1 };
    });
  };

  render() {
    return (
      <div>
        <div id="container">
          {Array.from({ length: this.state.periods }, (_, index) => (
            <PeriodButtonContainer key={index} />
          ))}
        </div>
        <div>
          <button id="addPeriod" onClick={this.addPeriodHandler}>
            Add a period
          </button>
        </div>
      </div>
    );
  }
}

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745660417a4638801.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信