首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新dhtmlx-sheduler uisng React

更新dhtmlx-sheduler uisng React
EN

Stack Overflow用户
提问于 2020-03-26 12:12:16
回答 2查看 116关注 0票数 0

我使用调度程序,如下所示:

从下拉列表(react-select)中,我选择一个名称(我必须在调度程序上显示其事件),它将正确显示,

nextState.showData是一个数据数组。

代码语言:javascript
复制
window.scheduler.parse(nextState.showData, 'json')

但是,当我取消选择相同的名称时,计划程序应该会更新,并且不会向我显示任何事件,但计划程序不会更新(仍然会显示现在已取消选择的名称的事件)

尽管在取消选择名称时,nextState.showData=[]

请帮帮忙。我正在使用带有React的dhtmlx-scheduler .

EN

回答 2

Stack Overflow用户

发布于 2020-03-30 04:53:41

这就是我解决问题的方法

代码语言:javascript
复制
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()中解析数据,它解决了我的问题

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

票数 0
EN

Stack Overflow用户

发布于 2020-03-30 19:30:54

是的,主要思想是在你parse()新的数据集之前,你应该每次都调用scheduler.clearAll()

您可以删除if条件中的window.scheduler.parse([], 'json'),因为此行在代码中不执行任何操作。

以下面的方式更改代码是有意义的:

代码语言:javascript
复制
componentDidUpdate(prevProps) {
    window.scheduler.clearAll();
    if(this.props.showData.length) {
        window.scheduler.parse(this.props.showData, 'json')
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60860916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档