You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Material UI DataGrid点击搜索后无限增高及分页尺寸闪烁问题求助

问题排查指引

1. 修复异步请求的状态更新逻辑

你当前onSearchHandle里的setShowLoader(false)没放在Promise回调里,会导致加载指示器刚显示就立刻隐藏——异步请求还没完成,useEffect就触发显示了Grid,等数据返回更新adUsers时,Grid又会重新渲染,这是引发闪烁和高度异常的核心原因。修改代码:

const onSearchHandle = (e: any) => {
    if (validate()) {
        setShowLoader(true);
        userStore.getAdUsers(searchText)
            .then((data) => {
                setADUsers(data);
            })
            .finally(() => {
                setShowLoader(false); // 请求完成(成功/失败)后再隐藏加载指示器
            });
    } else {
        console.log("Validation failed");
    }
};

2. 简化状态逻辑,避免Grid反复挂载卸载

现在用showGrid控制Grid显示,依赖showLoader的状态变化,多状态联动容易出问题。直接通过showLoader和adUsers的状态控制显示,删掉showGrid相关的状态和useEffect:

// 渲染部分改成:
<div className="col table-responsive p-2">
    {!showLoader && adUsers.length > 0 && (
        <DataGrid
            getRowId={(row: IADUser) => row.rowId as number}
            rows={adUsers}
            columns={columns}
            initialState={{
                pagination: {
                    paginationModel: {
                        pageSize: 10,
                    },
                },
            }}
            pageSizeOptions={[10]}
            disableRowSelectionOnClick
        />
    )}
    {showLoader && <Spinner />}
</div>

这样Grid只会在数据加载完成且有数据时显示,避免反复挂载卸载导致的异常。

3. 给DataGrid设置固定高度

Material UI的DataGrid如果不设置高度,会随内容自动调整,数据变化时容易出现无限增高的问题。给Grid加固定高度:

<DataGrid
    // 其他属性保留
    style={{ height: '600px' }}
/>

或者用CSS类控制:

.datagrid-fixed {
    height: 600px;
    overflow-y: auto;
}

然后给Grid加上className="datagrid-fixed"。

4. 检查rowId的唯一性

确保row.rowId是唯一值,如果有重复的rowId,DataGrid会出现渲染异常(包括高度、分页闪烁)。打印adUsers数组,检查每个row的rowId是否唯一,或者改用用户ID等其他唯一标识作为getRowId的返回值。

5. 检查列配置的稳定性

如果columns里的列没有设置宽度(width或flex属性),Grid布局会不稳定,引发高度变化。给每个列明确设置宽度:

const columns = [
    { field: 'rowId', headerName: 'ID', width: 100 },
    { field: 'username', headerName: '用户名', flex: 1 },
    // 其他列同理
];

内容的提问来源于stack exchange,提问作者rohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:54:53