gpt4 book ai didi

reactjs - 在 Material Ui Datagrid 中更新行后不显示数据

转载 作者:行者123 更新时间:2023-12-05 05:58:24 26 4
gpt4 key购买 nike

该组件用于显示用户。一旦从另一个组件添加了新用户,usersUpdated 就会切换,并调用后端以再次获取所有用户,其中包含新添加的用户并显示在 Datagrid 中。但是数据网格不显示任何记录并且扭曲了数据网格用户界面。如果刷新页面或在 Datagrid 中执行某些其他操作(如更改 pageSize),则会正确显示所有记录。

    const UsersDisplayTable = (props) => {

const usersUpdated = props.usersUpdated;
const [columns, setColumns] = useState(
[
{
field: 'email',
headerName: 'Email',
align: "left",
headerAlign: "left",
flex: 1,
filterable: true
},
{
field: 'dateOfBirth',
headerName: 'Date Of Birth',
align: "center",
headerAlign: "center",
flex: 0.75,
filterable: false,
sortable: false,
valueFormatter: (params) => {
const valueFormatted = moment(
new Date(params.row.dateOfBirth)).format(
'DD MMM YYYY');
return `${valueFormatted}`;
}
},
{
field: "actions",
headerName: "Actions",
sortable: false,
filterable: false,
align: "center",
headerAlign: "center",
flex: 0.75,
renderCell: (params) => {
return (
<>
<EditUserIcon
onClick={(e) => props.editUser(
e, params.row)}
title='Edit'/>
</>
);
}
}
]
);

const [allUsers, setAllUsers] = useState([]);

useEffect(() => {
axios
.get("/get-all-users")
.then(data => {
setAllUsers(data.data.data)
}).catch(error => {})
}, [usersUpdated])

return (
<>
<DataGrid
sortingOrder={["desc", "asc"]}
rows={allUsers} columns={columns}
disableSelectionOnClick
disableColumnSelector />
</>
);
}
export default UsersDisplayTable;

数据网格的初始加载 enter image description here

添加动态行或用户后 enter image description here

这是 Material UI Datagrid 的限制吗?

最佳答案

我在使用 @mui/x-data-grid 5.0.1 版时遇到了同样的问题。

我能够通过设置一个依赖于我的行的 useEffect 来解决这个问题。在这个使用效果中,我只是切换了一个状态变量,我将它用于我的网格中的行高。

const [rowHeight, setRowHeight] = useState(28);    

useEffect(() => {
if (rowHeight === 28) {
setRowHeight(29);
}else {
setRowHeight(28);
}
}, [rows]);

...

<DataGrid
rows={rows}
columns={columns}
pageSize={pgSize}
rowHeight={rowHeight}
...otherProps
/>

我认为通过改变高度会触发网格及其内容的重新渲染。

此解决方案是一种解决代码中错误的 hack。

关于reactjs - 在 Material Ui Datagrid 中更新行后不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68513193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com