我有以下反应成分:
export default class AdminHomePage extends Component {
render() {
return (
<div>
<NavBar />
<OptionsMenu />
<Form /> // needs to be inittially hidden
<ImportFile /> // needs to be inittially hidden
<Footer />
</div>
);
}
}在我的OptionsMenu组件中,我有两个按钮:
export default class OptionsMenu extends Component {
render() {
return (
<div className="admin-menu">
<div className="admin-menu-header">Select an option</div>
<div className="buttons-admin-menu">
<button className="button-admin">
Register
</button>
<button className="button-admin" onClick={getFileModel}>
Import CSV file
</button>
</div>
</div>
);
}
}最初,我需要同时隐藏Form和ImportFile组件,所以当我单击OptionsMenu文件中的"Import“按钮时,我会显示ImportFile组件,当我单击”注册“按钮时,会显示表单E 213组件。
我只找到了一些主题,这些主题显示了如何隐藏/显示在同一个文件/类中有各自按钮的组件,因此我不知道如何处理不同类上的按钮和组件。
提前谢谢。
发布于 2020-08-18 19:22:48
您需要在父组件中创建一个记录状态(确定可见性的状态)的方法,并将该方法作为支柱传递:
export default class AdminHomePage extends Component {
constructor(props) {
super(props);
this.state = {
isVisible: false
}
this.isElVisible = this.isElVisible.bind(this);
}
isElVisible() {
this.setState({isVisible: !isVisible});
}
render() {
return (
<div>
<NavBar />
<OptionsMenu isViz={this.isElVisible} />
<Form /> // needs to be inittially hidden
{ this.state.isVisible? <ImportFile /> : '' } // needs to be inittially hidden
<Footer />
</div>
);
}
}然后,在您的props.isViz组件中调用OptionsMenu组件onClick或任何您希望它是可见的。
发布于 2020-08-18 20:36:56
我能够解决创建一个函数然后将该函数作为支柱发送给OptionsMenu组件的问题(类似于@silencedogood所说的,但他的回答有一些问题)。
组件AdminHomePage
export default class AdminHomePage extends Component {
constructor(props) {
super(props);
this.handleFormClick = this.handleFormClick.bind(this);
this.handleImportClick = this.handleImportClick.bind(this);
this.state = {
formVisible: false,
importVisible: false,
};
}
handleFormClick() {
this.setState({
formVisible: true,
importVisible: false,
});
}
handleImportClick() {
this.setState({
formVisible: false,
importVisible: true,
});
}
render() {
return (
<div>
<NavBar
keycloak={this.props.keycloak}
name={this.props.name}
email={this.props.email}
/>
<OptionsMenu
showForm={this.handleFormClick}
showImport={this.handleImportClick}
/>
{this.state.formVisible ? <Form /> : null}
{this.state.importVisible ? <HomePage /> : null}
<Footer />
</div>
);
}
}调用组件AdminHomePage中的函数
export default class OptionsMenu extends Component {
render() {
return (
<div className="admin-menu">
<div className="admin-menu-header">Selecione uma opção</div>
<div className="buttons-admin-menu">
<button
className="button-admin"
onClick={() => this.props.showForm()}
>
Register
</button>
<button
className="button-admin"
onClick={() => {
this.props.showImport();
getFileModelo();
}}
>
Import CSV file
</button>
</div>
</div>
);
}
}https://stackoverflow.com/questions/63475253
复制相似问题