ОБНОВЛЕНО 3-26-2019
Я пытаюсь дать пользователям возможность добавлять события в календарь и отображать эти события при вводе. Я использую интерфейс React.js и могу отображать события в новом календаре, но он не удаляет старый (я просто получаю календари 10 + , которые отображаются друг на друге ).
Я пытался использовать метод .destroy()
, а затем повторно отображать календарь, но этот метод, кажется, недоступен / не работает, поэтому я решил, что попробую rerenderEvents()
и сохраню тот же объект календаря, но эту функцию Кажется, также не доступны. Хотелось бы помочь в решении этой проблемы со всеми, кто знаком с FullCalendar v.4
Как только пользователь вводит собранные данные в объект данных и добавляет их в состояние, но если я просто зеркально отражаю вышесказанное, он отображает новый календарь поверх старого.
Это похоже на то, что я не могу получить объект Календаря, как только он будет обработан для выполнения этих вызовов методов, но у меня проблемы с захватом его в отдельной функции. Все, что говорят доктора, - это позвоните по номеру .destroy()
или по номеру .rerenderEvents()
, а не по телефону.
//This successfully Renders
componentOnMount() {
var calendarNew = document.getElementById('calendar');
let newCalendar = new Calendar(calendarNew, {
plugins: [ dayGridPlugin, timeGridPlugin, listPlugin ],
events: this.state.events
});
console.log(newCalendar)
await this.setState({ calendarObj: newCalendar })
// let myNewEvents = newCalendar.getEvents()
// console.log(myNewEvents)
// let stateEvents = this.state.calendarObj.getEvents()
// console.log(stateEvents)
this.state.calendarObj.render();
}
Я попробовал следующее, чтобы уменьшить двойной рендер ...
async handleNewEvent() {
// code that creates an object and sets the state to the new event array//
var newEventArr = existingEvents.concat(newEvent)
console.log(newEventArr)
await this.setState({ events: newEventArr })
await this.setState({ currentIndex: (this.state.currentIndex + 1) })
this.props.change(this.state.events, this.state.currentIndex)
//Contains the new event array in the console
console.log(this.state.events)
this.state.calendarObj.rerenderEvents();
}
Но это ничего не делает. Я даже не могу выполнить render () из handleNewEvent (), так как кажется, что состояние не может содержать функции в нем, и я не могу найти способ передать функцию из ComponentDidMount () в handleNewEvent (). Я в растерянности ...