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
1 Answer
Reset to default 6You 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>
);
}
}