Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReactJS错误:不变冲突:使用jQuery Datatable插件时processUpdates_Reactjs_Datatables - Fatal编程技术网

ReactJS错误:不变冲突:使用jQuery Datatable插件时processUpdates

ReactJS错误:不变冲突:使用jQuery Datatable插件时processUpdates,reactjs,datatables,Reactjs,Datatables,在React应用程序中,我使用jquery Datatable 最初,表加载良好。每当我试图用新数据覆盖数据时,它都会抛出错误“不变冲突:processUpdates():找不到元素的子元素10。这可能意味着DOM意外发生了变化…” 我搜索了这个问题。我所理解的是,由于datatable插件直接改变了DOM,React在状态更改上变得混乱。我得到的一个解决方案是调用willComponentUpdate上的datatable。但是,这对我不起作用。不知道如何解决这个问题 谢谢你的帮助 $(“#

在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上