reactjs - 如何从反应中的功能打开对话框?
问题描述
我目前正在使用此代码来创建我的调度程序应用程序。
这是我现在的代码 - Scheduler.js
class CalendarScheduler extends Component {
state = {
viewModel: schedulerData,
showBookingDialog: true,
}
handleClickOpen = () => {
this.setState( (prevState) => {
return {showBookingDialog : !prevState.showBookingDialog};
} )
};
handleClose = () => {
this.setState({ showBookingDialog: false });
};
render() {
const { viewModel } = this.state;
let schedulerData = this.state.viewModel;
schedulerData.setResources(this.props.rooms);
return (
<div>
<Scheduler schedulerData={viewModel}
prevClick={this.prevClick}
nextClick={this.nextClick}
onSelectDate={this.onSelectDate}
newEvent={this.newEvent}
/>
</div>
)
}
在 Scheduler.js 中,我有一个 newEvent 函数:
newEvent = (schedulerData, slotId, slotName, start, end, type, item) => {
return(
<BookingDialog
open={this.state.showBookingDialog}
onClose={this.handleClose}
/>
);
}
我的问题是为什么当我单击调度程序创建一个新事件时,它没有打开我的 BookingDialog?
之前的 newEvent 函数使用了 window.confirm,可以在第 93 行找到。
解决方案
您可以在调度程序组件中设置状态变量以显示 BookingDialog,并在 newEvent 函数中将该状态变量设置为“true”。在调度程序组件中,根据此状态变量查看 BookingDialog。
newEvent = (schedulerData, slotId, slotName, start, end, type, item) => {
this.setState({showBookingDialog:true})
}
并在调度程序组件中
{this.state.showBookingDialog && <BookingDialog
open={this.state.showBookingDialog}
onClose={this.handleClose}
/>}
推荐阅读
- javascript - react-datepicker 因时刻和新日期而失败
- java - 微服务:我应该按实体还是按 MVC 模式结构来安排我的 Spring 项目结构?
- php - PHP 不在 echo 中的 textarea 值中显示换行符
- android - 可以使用 Google 助理在 Android 应用中执行语音命令吗?
- asp.net - asp.net 核心编辑器模板:属性名称为空
- php - 修复无效的 JSON
- ios - 如何模拟 iOS 应用程序的挂起状态?
- angular - 我如何以角度重建 npm 模块?
- c# - 使用不同形式的连接c#
- ruby-on-rails - Rails - 如何在凭证栏上设置过期日期