If I call this in parent comp:
private addEmployeeForm() {
return <AddEmployeeComp employees={this.state.employees} showForm={true} />;
}
And then AddEmployeeComp:
export class AddEmployeeComp extends React.Component<
{ employees: Employee[]; showForm: boolean },
{
showEmployeeForm: boolean;
}
> {
constructor(props: { employees: Employee[]; showForm: boolean }) {
super(props);
this.state = {
showEmployeeForm: this.props.showForm,
};
}
private handleClose() {
this.setState({
showEmployeeForm: false,
});
}
public render() {
return (
<>
{this.state.showEmployeeForm ? (
<div className="popup-box">
<div className="box">
<span className="close-icon" onClick={() => this.handleClose()}>
x
</span>
<div className="userNameDiv">
<label className="labelUsername" htmlFor="username">
Username
</label>
<br />
...
Why does the showForm={true} not apply, once I closed the Formular (AddEmployeeCmp) and I want to open it again. showForm is after the first open always set to false. How could I change it to true again (from parent comp)?
showFormis props andshowEmployeeFormis state.showFormonly initializesshowEmployeeForm. If you want parent know its child componet's state change, you may need to lift the state up. See React doc sharing-state-between-components and lifting-state-up.