Я использую BigCalendar и пытаюсь добавить событие. В настоящее время в github используется window.prompt (); но я бы хотел использовать модальный. Однако ничего не появляется, и я не уверен, почему.
ссылка: https://github.com/intljusticemission/react-big-calendar
оказывать:
return(
<div style = {{ height: 700 }}>
<BigCalendar
selectable = {true}
localizer = {localizer}
events = {this.state.cal_events}
step = {30}
defaultView='month'
views = {['month','week','day']}
defaultDate = {new Date()}
scrollToTime = {new Date(1970, 1, 1, 6)}
onSelectEvent = {event => alert(event.title)}
onSelectSlot = {this.handleSelect}
/>
</div>
);
handleSelect (где пользователь щелкает дату, чтобы добавить событие)
handleSelect = e => {
//set model to true
this.openModal();
return(
<div>
<Modal
isOpen = {this.state.modalIsOpen}
onAfterOpen = {this.afterOpenModal}
onRequestClose = {this.closeModal}
contentLabel = "Example Modal"
>
<button onClick = {this.closeModal}>close</button>
<div>Add event</div>
<form onSubmit = {this.onFormSubmit}>
<input />
<DropdownButton title = {this.state.dropDownSelection} key = "1" id = "test" onSelect = {this.onchangeSelectDropdown} >
<MenuItem eventKey = "Option 1"> Option 1</MenuItem>
<MenuItem eventKey = "Option 2"> Option 2</MenuItem>
<MenuItem eventKey = "Option 3"> Option 3</MenuItem>
<MenuItem divider />
<MenuItem eventKey = "Other">Other</MenuItem>
</DropdownButton>
<input type = "submit" value = "Submit" />
</form>
</Modal>
</div>
);
}
Проблема в том, что Модель никогда не отображается, и я не знаю почему. Если это невозможно, есть ли альтернативы?





The problem is that Model never renders and I am unsure why
Это потому, что возвращенный компонент Modal никогда не был прикреплен к DOM.
Попробуйте изменить свою реализацию, вместо этого условно отрисовав Modal.
handleSelect = e => {
//set model to true
this.setState({
modalIsOpen: true
});
}
renderModal = () => {
if (!this.state.modalIsOpen) return;
return(
<Modal
isOpen = {this.state.modalIsOpen}
onAfterOpen = {this.afterOpenModal}
onRequestClose = {this.closeModal}
contentLabel = "Example Modal"
>
<button onClick = {this.closeModal}>close</button>
<div>Add event</div>
<form onSubmit = {this.onFormSubmit}>
<input />
<DropdownButton title = {this.state.dropDownSelection} key = "1" id = "test" onSelect = {this.onchangeSelectDropdown} >
<MenuItem eventKey = "Option 1"> Option 1</MenuItem>
<MenuItem eventKey = "Option 2"> Option 2</MenuItem>
<MenuItem eventKey = "Option 3"> Option 3</MenuItem>
<MenuItem divider />
<MenuItem eventKey = "Other">Other</MenuItem>
</DropdownButton>
<input type = "submit" value = "Submit" />
</form>
</Modal>
);
}
render() {
return (
<div style = {{ height: 700 }}>
<BigCalendar
selectable = {true}
localizer = {localizer}
events = {this.state.cal_events}
step = {30}
defaultView = "month"
views = {["month", "week", "day"]}
defaultDate = {new Date()}
scrollToTime = {new Date(1970, 1, 1, 6)}
onSelectEvent = {event => alert(event.title)}
onSelectSlot = {this.handleSelect}
/>
<button onClick = {this.openModal}>Open Modal</button>
{this.renderModal()}
</div>
);
}См. Минимальный рабочий пример здесь: https://codesandbox.io/s/50j9zx7knn
Вы уверены, что handleSelect вызывается, когда вы выбираете дату, можете ли вы попробовать записать его в журнал и сообщить мне.
Да, потому что у меня есть консольный журнал на renderModal, который печатается
Хорошо, вы можете показать мне полный код компонента на скрипке, ручке и т. д., Чтобы мы могли проверить, что происходит.
Я добавил ссылку на свой вопрос. Дайте мне знать, если вы найдете то, что я не могу
Я отредактировал ответ и добавил минимальный рабочий пример.
Он по-прежнему ничего не отображает внутри оператора return. Интересно, возможно ли это вообще?