#reactjs #fullcalendar #fullcalendar-scheduler
#reactjs #полный календарь #fullcalendar-планировщик
Вопрос:
У меня проблема с обслуживанием ресурса через канал json в планировщике fullcalendar с помощью react. Канал работает в обычном планировщике fullcalendar без react.
import React from 'react';
import FullCalendar from '@fullcalendar/react';
import resourceTimelinePlugin from '@fullcalendar/resource-timeline';
import calendarInteraction from '@fullcalendar/interaction';
class Calendar extends React.Component {
state = {};
render() {
return (
<div>
<FullCalendar
schedulerLicenseKey="GPL-My-Project-Is-Open-Source"
plugins={[calendarInteraction, resourceTimelinePlugin]}
initialView={'resourceTimelineMonth'}
selectable={true}
editable={true}
resourceAreaWidth={'10%'}
resources={"localhost/resources"}
/>
</div>
);
}
}
export default Calendar;
Я получаю следующую ошибку в консоли:
Предупреждение: не удается вызвать setState для компонента, который еще не смонтирован. Это не операция, но это может указывать на ошибку в вашем приложении. Вместо этого назначьте this.state
напрямую или определите state = {};
свойство класса с желаемым состоянием в компоненте CalendarDataProvider.
Это похоже на проблему react, но я ее не понимаю. Где «плагин» fullcalendar react сохраняет состояние ресурсов?
Комментарии:
1. Как вы думаете, почему проблема именно в подаче ресурсов? Проблема исчезнет, если вы удалите
resources={"localhost/resources"}
строку?2. Да, ошибка исчезнет, если я удалю строку ресурсов. Если я вставлю массив с ресурсами, он также отлично работает. Но канал выдает эту ошибку.
3. ОК. Я не эксперт в react (я просто хорошо разбираюсь в FullCalendar и общих материалах JS), поэтому я не знаю, связано ли это непосредственно с вашей ошибкой, но я беспокоюсь, будет ли
localhost/resources
правильно отображаться как URL или нет. Можете ли вы просто попробовать использовать абсолютный URL, например,http://localhost/resources
(илиhttps://
, если это то, что вы используете), чтобы исключить это как проблему? Также, пожалуйста, проверьте сетевой инструмент вашего браузера, чтобы увидеть, правильно ли выполняется запрос AJAX и получает ли он действительный ответ.4. Также, опять же, я не специалист по React, но мне было интересно, какова цель
state = {};
строки? Это не показано ни в одном из примеров на fullcalendar.io/docs/react и само по себе оно, похоже, не делает ничего полезного, просто объявляет пустой объект. Повлияет ли это на что-нибудь (хорошее или плохое), если вы удалите эту строку? Просто пытаюсь предложить вещи, которые выглядят не совсем правильно, опять же, чтобы исключить их как потенциальную проблему.5. Маршрут localhost/resources — это просто пример. Это также работает, если я использую обычный fullcalendar v5 без react.
state={}
определяет начальное состояние в react. Это не имеет никакого значения, если я удалю эту строку.
Ответ №1:
Извините, я нашел ответ:
Кажется, вам нужно явно указать абсолютный URL-адрес в react fullcalendar, но версия fullcalendar без react работает также с неявными URL-адресами.
Так resources={"http://localhost/resources"}
работает. И resources={"localhost/resources"}
не работает!
Спасибо @ADyson, который дал ответ.