如何在 react-big-calendar 月视图中 select 只有一天

How to select only one day in react-big-calendar month view

我在月视图中使用 react-big-calendar 日历。 https://github.com/jquense/react-big-calendar 我想通过点击任何单元格(天)来实现 Add a new event,但我不确定我应该使用什么道具。

我知道 onSelectEvent 将 select 仅存在一整天的事件,这不是我需要的,而且 selectable={true} 将启用 multi-selecting 对我来说没用。

所以我需要 onDayClick 之类的东西,但到目前为止我并没有那么幸运

我终于想出了使用 onSelectSlot 并使用 css 手动隐藏 multi-selecting 效果,它并不完美,但它的工作!

        <BigCalendar
          view="month"
          onNavigate={onNavigate}
          culture="en-GB"
          date={currentDate}
          selectable={true}
          onSelectEvent={onSelectEvent}
          onSelectSlot={onSelectSlot}
          onView={() => {}}
          localizer={localizer}
          events={events}
        />

将所选时段的结尾用作所选日期:(我知道这并不完美!)

  const onSelectSlot = (slotInfo: {
    start: stringOrDate;
    end: stringOrDate;
    slots: Date[] | string[];
    action: 'select' | 'click' | 'doubleClick';
  }) => {
     // use moment(slotInfo.end) as selected day!
  };

使用css隐藏multi-selecting效果:

  calendar: {
    '& > .rbc-calendar': {
      width: '100%',
      minHeight: '500px',
    },
    '& .rbc-month-view': {
      border: 'none',
      '& .rbc-event': {
        paddingLeft: '2px',
        borderRadius: 3,
        backgroundColor: theme.palette.secondary.main,
      },
      '& .rbc-now': {
        color: theme.palette.secondary.main,
      },
      '& .rbc-selected-cell': {
        backgroundColor: '#fff',
      },
      '& .rbc-today.rbc-selected-cell': {
        backgroundColor: '#eaf6ff',
      },
      '& .rbc-off-range-bg.rbc-selected-cell': {
        background: '#e6e6e6',
      },
      '& .rbc-month-row': {
        cursor: 'pointer',
      },
    },
  },

你可以这样做它会起作用。
我只是在点击插槽时制作了一个模态弹出窗口,您可以放置​​警报或控制台日志

const handleSelectSlot = (start) => {
  this.getModalData(start);
  this.setState({ modalOpen: true });
  this.setState({ valueIntoModal: start.start });
};

<Calendar
  selectable={true}
  formats={formats}
  localizer={localizer}
  events={[
    ...this.state.submittedData.data,
    ...this.state.savedData.data,
  ]}
  view="month"
  views={["month"]}
  onSelectSlot={handleSelectSlot}
  startAccessor="start"
  endAccessor="end"
/>