【发布时间】:2017-02-01 14:18:37
【问题描述】:
在事件道具更改后,我正在努力更新包装在 React 中的 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>
);
}
}
这是包含全日历插件的类:
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 函数将新事件添加到数组中,然后我将它传递给EmployeesCalendar。
在EmployeesCalendar 中,我更新componentWillReceiveProps 中的事件状态,然后将其传递给fullcalendar 插件,强制更新它。但是完整的日历永远不会更新。
有什么建议吗?
【问题讨论】:
标签: jquery reactjs fullcalendar