单击按钮以在 ReactJS 中打开对话框
Clicking a button to open dialog in ReactJS
我正在使用 React MDL 库,我使用了预定义的组件,例如 FABButton
<FABButton>
<Icon name="add"/>
</FABButton>
它显示的按钮如下图所示:
现在,我想要的是显示一个带有 + 图标的对话框...不像这里发生的那样:
这发生在这段代码之后:
<FABButton>
<AddingProject />
<Icon name="add" />
</FABButton>
对话框class如下:
class AddingProject extends Component {
constructor(props) {
super(props);
this.state = {};
this.handleOpenDialog = this.handleOpenDialog.bind(this);
this.handleCloseDialog = this.handleCloseDialog.bind(this);
}
handleOpenDialog() {
this.setState({
openDialog: true
});
}
handleCloseDialog() {
this.setState({
openDialog: false
});
}
render() {
return (
<div>
<Button colored onClick={this.handleOpenDialog} raised ripple>
Show Dialog
</Button>
<Dialog open={this.state.openDialog} onCancel={this.handleCloseDialog}>
<DialogTitle>Allow data collection?</DialogTitle>
<DialogContent>
<p>
Allowing us to collect data will let us get you the information
you want faster.
</p>
</DialogContent>
<DialogActions>
<Button type="button">Agree</Button>
<Button type="button" onClick={this.handleCloseDialog}>
Disagree
</Button>
</DialogActions>
</Dialog>
</div>
);
}
}
export default AddingProject;
以上代码包含所需的 import 语句
这对我有用....
第一步:我添加了modal的组件如下:
<FABButton>
<Icon name="add" />
</FABButton>
<ProjectModal>
第二步: 我添加了这个道具:visible
组件如下:
<ProjectModal visible={this.state.showDialog} />
在这里您需要将 showDialog
添加到 class 中的状态 false
。
state = {
showDialog: false
};
现在,进入第 3 步。
第三步:将这部分添加到你的代码中,当你点击时被调用。
openModal = () => {
this.setState({ showDialog: true });
};
另一方面,需要在按钮中实现onClick
,如下:
<FABButton onClick={this.openModal.bind(this)}>
<Icon name="add" />
</FABButton>
第四步:在modal/dialogclass中,需要将visible存放在一个新的state变量中,也就是这里showDialogModal
constructor(props, context) {
super(props, context);
this.state = {
showDialogModal: this.props.visible
};
}
现在,你需要将改变的状态从第一个class传递到modal/dialog class,React 给你的选项不止一个,我用了这个在第五步。 第五步: 使用此 React 事件 componentWillReceiveProps
如下。
componentWillReceiveProps(nextProps) {
if (this.props.showDialogModal != nextProps.visible) {
this.setState({
showDialogModal: nextProps.visible
});
}
}
这将反映 visible
属性 从第一个 class 到我们这里的新 showDialogModal
的任何变化
现在在渲染部分,你需要检查你的组件的文档,这里我从 React-Bootstrap 开始。
第六步:在你的组件中使用show
属性。
<Modal show={this.state.showDialogModal} onHide={this.closeModal}>
onHide
用于关闭对话框,所以你也需要实现它。
closeModal = () => {
this.setState({ showDialogModal: false });
};
最后,在关闭按钮中,添加:
<Button onClick={this.closeModal.bind(this)}>Close</Button>
祝你好运。
我正在使用 React MDL 库,我使用了预定义的组件,例如 FABButton
<FABButton>
<Icon name="add"/>
</FABButton>
它显示的按钮如下图所示:
现在,我想要的是显示一个带有 + 图标的对话框...不像这里发生的那样:
这发生在这段代码之后:
<FABButton>
<AddingProject />
<Icon name="add" />
</FABButton>
对话框class如下:
class AddingProject extends Component {
constructor(props) {
super(props);
this.state = {};
this.handleOpenDialog = this.handleOpenDialog.bind(this);
this.handleCloseDialog = this.handleCloseDialog.bind(this);
}
handleOpenDialog() {
this.setState({
openDialog: true
});
}
handleCloseDialog() {
this.setState({
openDialog: false
});
}
render() {
return (
<div>
<Button colored onClick={this.handleOpenDialog} raised ripple>
Show Dialog
</Button>
<Dialog open={this.state.openDialog} onCancel={this.handleCloseDialog}>
<DialogTitle>Allow data collection?</DialogTitle>
<DialogContent>
<p>
Allowing us to collect data will let us get you the information
you want faster.
</p>
</DialogContent>
<DialogActions>
<Button type="button">Agree</Button>
<Button type="button" onClick={this.handleCloseDialog}>
Disagree
</Button>
</DialogActions>
</Dialog>
</div>
);
}
}
export default AddingProject;
以上代码包含所需的 import 语句
这对我有用....
第一步:我添加了modal的组件如下:
<FABButton>
<Icon name="add" />
</FABButton>
<ProjectModal>
第二步: 我添加了这个道具:visible
组件如下:
<ProjectModal visible={this.state.showDialog} />
在这里您需要将 showDialog
添加到 class 中的状态 false
。
state = {
showDialog: false
};
现在,进入第 3 步。
第三步:将这部分添加到你的代码中,当你点击时被调用。
openModal = () => {
this.setState({ showDialog: true });
};
另一方面,需要在按钮中实现onClick
,如下:
<FABButton onClick={this.openModal.bind(this)}>
<Icon name="add" />
</FABButton>
第四步:在modal/dialogclass中,需要将visible存放在一个新的state变量中,也就是这里showDialogModal
constructor(props, context) {
super(props, context);
this.state = {
showDialogModal: this.props.visible
};
}
现在,你需要将改变的状态从第一个class传递到modal/dialog class,React 给你的选项不止一个,我用了这个在第五步。 第五步: 使用此 React 事件 componentWillReceiveProps
如下。
componentWillReceiveProps(nextProps) {
if (this.props.showDialogModal != nextProps.visible) {
this.setState({
showDialogModal: nextProps.visible
});
}
}
这将反映 visible
属性 从第一个 class 到我们这里的新 showDialogModal
的任何变化
现在在渲染部分,你需要检查你的组件的文档,这里我从 React-Bootstrap 开始。
第六步:在你的组件中使用show
属性。
<Modal show={this.state.showDialogModal} onHide={this.closeModal}>
onHide
用于关闭对话框,所以你也需要实现它。
closeModal = () => {
this.setState({ showDialogModal: false });
};
最后,在关闭按钮中,添加:
<Button onClick={this.closeModal.bind(this)}>Close</Button>
祝你好运。