Обновление dhtmlx-sheduler uisng React - PullRequest
0 голосов
/ 26 марта 2020

Я использую планировщик следующим образом:

Из раскрывающегося списка (реагировать на выбор), я выбираю имя (чьи события я должен показать в планировщике), и оно показывает правильно,

nextState.showData - это массив данных.

window.scheduler.parse(nextState.showData, 'json')

, но когда я отменяю выбор того же имени, планировщик должен обновить и не показывать мне никаких событий, но планировщик не обновляет (и по-прежнему показывает событие для имя, которое сейчас не выбрано)

Хотя при отмене выбора имени nextState.showData = []

Пожалуйста, помогите. Я использую dhtmlx-планировщик с React ........

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Да, основная идея заключается в том, что вы должны вызывать scheduler.clearAll() каждый раз, прежде чем parse() новый набор данных.

Вы можете удалить window.scheduler.parse([], 'json') в условии if, потому что эта строка ничего не делает в коде.

Имеет смысл изменить код следующим образом:

componentDidUpdate(prevProps) {
    window.scheduler.clearAll();
    if(this.props.showData.length) {
        window.scheduler.parse(this.props.showData, 'json')
    }
}
0 голосов
/ 29 марта 2020

Вот как я решил проблему

componentDidUpdate(prevProps) {
    if(this.props.showData.length===0) {
        window.scheduler.clearAll();
        window.scheduler.parse([], 'json')
    }
    else {
        window.scheduler.clearAll();
        window.scheduler.parse(this.props.showData, 'json')
    }
}

Вместо того, чтобы анализировать данные в shouldComponentUpdate (), я сделал это в componentDidUpdate (), и это решило мою проблему

Courtesy https://forum.dhtmlx.com/t/gantt-not-re-rendering-after-update/37702/2

...