이벤트 소품 변경 후 React로 감싼 jQuery fullcalendar를 업데이트하는 데 어려움을 겪고 있습니다. 여기React.js에서 소품 변경 후 jQuery fullcalendar를 업데이트하십시오.
데이터를 & 일정 포함하는 클래스입니다 :
export default class Calendar extends Component {
constructor(props) {
super(props);
this.addEvent = this.addEvent.bind(this);
this.state = {
events: [
{
title: 'Sometitle',
date: moment(Date.now()),
allDay: false,
},
],
};
}
addEvent() {
const date = moment(Date.now()).add(1, 'hour');
this.setState({
events: [].concat(this.state.events, [{
title: 'Sometitle 1',
date,
allDay: false,
}]),
});
}
render() {
return (
<div className="allow-scroll">
<button onClick={this.addEvent}> Add event</button>
<EmployeesCalendar events={this.state.events} />
</div>
);
}
}
을 그리고 여기 클래스는 fullcalendar 플러그인이 포함되어
import React, { Component } from 'react';
import jQuery from 'jquery';
require('fullcalendar');
export default class EmployeesCalendar extends Component {
constructor(props) {
super(props);
this.state = {
events: props.events,
};
}
componentDidMount() {
const { fullCalendar } = this;
jQuery(fullCalendar).fullCalendar({
events: this.state.events,
});
}
componentWillReceiveProps(nextProps, nextState) {
const { fullCalendar } = this;
const { events } = nextState;
this.setState({
events: nextProps.events,
},() => {
console.log(this.state.events);
jQuery(fullCalendar).fullCalendar('refetchEventSources', nextProps.event);
});
}
componentWillUnmount() {
const { fullCalendar } = this;
jQuery(fullCalendar).fullCalendar('destroy');
}
render() {
return (
<div ref={(calendar) => { this.fullCalendar = calendar; }} />
);
}
}
내가 배열에 새로운 이벤트를 추가하고 나는 그것을 전달보다 addEvent 기능이를 to EmployeesCalendar.
EmployeesCalendar에서 업데이트 이벤트의 상태는 componentWillReceiveProps
이며 fullcalendar 플러그인에 전달하여 강제 업데이트합니다. 그러나 fullcalendar는 결코 업데이트되지 않습니다.
제안 사항? 대신
이미 시도해 보았습니다.'render','refetchEvents' 이벤트에 대해서도 마찬가지입니다. –