Reactjs 更新mui数据网格,仅添加一个元素

Reactjs 更新mui数据网格,仅添加一个元素,reactjs,datagrid,material-ui,Reactjs,Datagrid,Material Ui,我在使用mui数据网格和socket.io时遇到问题。 我从一个运行良好的api加载初始数据。 但是,当我想用websocket中的数据更新表时,每次更改只添加和覆盖一个元素。代码如下: 表: const[tableData,setTableData]=useState(props.tableData); useffect(()=>{ setTableData(道具tableData); },[props.tableData]); 返回( OpenModel(行)} /> );问题 原因是套接

我在使用mui数据网格和socket.io时遇到问题。 我从一个运行良好的api加载初始数据。 但是,当我想用websocket中的数据更新表时,每次更改只添加和覆盖一个元素。代码如下:

表:

const[tableData,setTableData]=useState(props.tableData);
useffect(()=>{
setTableData(道具tableData);
},[props.tableData]);
返回(
OpenModel(行)}
/>
);问题
原因是套接字处理程序正在使用第一次呈现时的状态设置程序

addOrder
为例,当您调用
setData({…data
时,它将始终使用数据的初始状态)时,您可以在特定数据值的上下文中创建该函数。(要了解原因,请参阅facebook的react开发者丹·阿布拉莫夫)

解决方案 相反,您可以使用函数更新语法将函数传递给setData:

setData(data=>({…data,

这样可以确保始终使用最后存储的值


查看useState上的react文档

谢谢,这很好。现在我需要从新数据集中删除,但我只得到了旧数据集。