Существует много сообщений об обновлении состояния реакции с участием массива, но ни один из них, похоже, не касается моего случая.Реагировать this.setState не обновлять переменную состояния массива
Я использую компонент FullCalendar.io, который принимает массив событий как опору из родительского компонента и заполняет ячейки календаря. Я попытался установитьState 'cal_events_state' на основе nextProps.cal_events, но по какой-то причине cal_event_state установлен в [] (видимо, исходное значение состояния перезаписывается).
Что мне не хватает?
import React from 'react';
import ReactDOM from 'react-dom';
var $ = require ('jquery')
var Calendar = React.createClass ({
render: function() {
return <div id="calendar"></div>;
},
getInitialState: function() {
return {
cal_events_state: [{"due": "201505", "title": "Production"}]
, test_state: 11
}
},
componentDidMount: function() {
var self = this;
const var_cal_events = this.props.cal_events; //This prop is blank at this point because ajax hasn't returned an array yet.
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: var_cal_events;
})
},
componentWillReceiveProps: function(nextProps) {
var self = this;
var var_cal_events = nextProps.cal_events; // after receiving the ajax fetch payload, this has some event tasks.
this.setState({
cal_events_state: var_cal_events, // This doesn't update state with the newly received payload
test_state: 22 // This updates state
})
$('#calendar').fullCalendar({
events: var_cal_events
})
$('#calendar').fullCalendar('refetchEvents');
},
});
Почему вы создаете календарь дважды? И почему вы используете es5 и es6 в смешении? В верхней части этого, вы, вероятно, не должны использовать jquery здесь. Существуют и другие способы иметь календарь, и таким образом у вас нет тонны манипуляции с dom за пределами реакции (что является предпочтительной практикой) –
У вас есть ссылка на лучшую пример календаря? –
Я имею в виду просто сделать простой поиск в Google .. нашел результаты, подобные этому. [Link1] (https://github.com/Hacker0x01/react-datepicker) .... [Link2] (https://github.com/zippyui/react-date-picker) .... [Букет разных примеры] (https://react.rocks/tag/DatePicker) ... –