ReactJS错误:不变冲突:使用jQuery Datatable插件时processUpdates
在React应用程序中,我使用jquery Datatable 最初,表加载良好。每当我试图用新数据覆盖数据时,它都会抛出错误“不变冲突:processUpdates():找不到元素的子元素10。这可能意味着DOM意外发生了变化…” 我搜索了这个问题。我所理解的是,由于datatable插件直接改变了DOM,React在状态更改上变得混乱。我得到的一个解决方案是调用willComponentUpdate上的datatable。但是,这对我不起作用。不知道如何解决这个问题 谢谢你的帮助ReactJS错误:不变冲突:使用jQuery Datatable插件时processUpdates,reactjs,datatables,Reactjs,Datatables,在React应用程序中,我使用jquery Datatable 最初,表加载良好。每当我试图用新数据覆盖数据时,它都会抛出错误“不变冲突:processUpdates():找不到元素的子元素10。这可能意味着DOM意外发生了变化…” 我搜索了这个问题。我所理解的是,由于datatable插件直接改变了DOM,React在状态更改上变得混乱。我得到的一个解决方案是调用willComponentUpdate上的datatable。但是,这对我不起作用。不知道如何解决这个问题 谢谢你的帮助 $(“#
$(“#主题表”)
.addClass('已初始化')
.数据表({
订单:[
[4,“描述”]
],
columnDefs:[{
目标:[-1],
类名:“隐藏”
}]
});代码>在过去一天半的时间里,我一直在进行同样的战斗。在这一点上,我正在考虑放弃数据表,以实现像React这样的原生网格
也就是说,在React对DOM进行任何操作之前,可以通过销毁和重新初始化数据表来强制它工作。使用组件生命周期执行以下操作:
// Initialize Datatable after React has rendered
componentDidMount() {
$('#dataTable').dataTable(dataTableStyle);
},
// Destroy Datatable before any component updates
componentWillUpdate(nextProps, nextState) {
$('#dataTable').dataTable().fnDestroy();
},
// Re-initialize Datatable after React has rendered
componentDidUpdate(prevProps, prevState) {
$('#dataTable').dataTable(dataTableStyle);
},
为了更进一步,您可以使用“检查下一个/上一个道具和状态”,以确定是否需要实际进行渲染
这个解决方案的问题是速度太慢,在处理包含大量数据的表时,我会遇到难看的回流。不过,它可能适用于不太复杂的网格。这非常有用。我试图破坏你在componentWillUpdate中提到的。但是,它开始抛出诸如“找不到未定义的父节点”之类的错误。它不会在FNDreastry上第一次抛出错误。但是当我第二次给出新数据时,它给出了错误。它在第二次调用dnDestory时抛出了错误?#dataTable元素仍然在DOM上吗?你是对的。在第二次调用时抛出错误,并且#dataTable元素仍在DOM上