Событие добавления Reactjs BigCalendar

Я использую 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> 
  );

}

Проблема в том, что Модель никогда не отображается, и я не знаю почему. Если это невозможно, есть ли альтернативы?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
0
4 547
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Он по-прежнему ничего не отображает внутри оператора return. Интересно, возможно ли это вообще?

user10696040 22.12.2018 17:12

Вы уверены, что handleSelect вызывается, когда вы выбираете дату, можете ли вы попробовать записать его в журнал и сообщить мне.

Ana Liza Pandac 22.12.2018 17:15

Да, потому что у меня есть консольный журнал на renderModal, который печатается

user10696040 22.12.2018 17:16

Хорошо, вы можете показать мне полный код компонента на скрипке, ручке и т. д., Чтобы мы могли проверить, что происходит.

Ana Liza Pandac 22.12.2018 17:21

Я добавил ссылку на свой вопрос. Дайте мне знать, если вы найдете то, что я не могу

user10696040 22.12.2018 17:32

Я отредактировал ответ и добавил минимальный рабочий пример.

Ana Liza Pandac 22.12.2018 17:53

Другие вопросы по теме