修改将影响排序顺序的一列中的数据时,数据将正确重新排序,但是使用的输入不会更新为新的行数据。在这里复制最简单https://codesandbox.io/s/kky34kkwr在第2列“年龄”的第3行中输入99按标签注意第一行现在是我们编辑的行,age = 99,full = 198我们应该在这里看到的是我们输入99进入表顶部的行(确实如此),并且新行替换了我们编辑的先前位置的行应具有与该新行关联的数据(而不是)。我似乎无法找到一种方法来强制对此进行更新,甚至找不到一个笨拙的hack都无法以明智的方式实现我想要的功能。希望有人可以帮忙!编辑:此图像显示上述说明的第2步后立即显示。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 对于任何为此苦苦挣扎的人,在我们等待修复的过程中,我已经找到了解决方法。给定原始问题中的示例,将renderEditable替换为以下内容将正确执行:renderEditable(cellInfo) { return ( <div style={{ backgroundColor: "#fafafa" }} contentEditable suppressContentEditableWarning onBlur={e => { const data = [...this.state.data]; data[cellInfo.index][cellInfo.column.id] = e.target.innerHTML; data[cellInfo.index].full = data[cellInfo.index].age * 2; e.target.innerHTML = this.state.data[cellInfo.index][cellInfo.column.id]; this.setState({ data }); }} >{this.state.data[cellInfo.index][cellInfo.column.id]}</div> );}onBlur事件在表重新排序之前触发,因此,如果我们只是获取值,将其放在一边,然后将innerHTML重置为原始值,然后再使用setState触发度假村,我们将得到正确的值显示。这不是理想的方法,但是可行。不要忘记验证输入。 (adsbygoogle = window.adsbygoogle || []).push({});
10-08 04:19