Reactjs 物料界面:DataGrid/XGrid如何检测密度变化?

Reactjs 物料界面:DataGrid/XGrid如何检测密度变化?,reactjs,material-ui,Reactjs,Material Ui,我想在用户更改密度表时更改操作图标大小: 当行变小时,右侧的笔图标应改变大小,如下所示: 目前,我使用onStageChange捕获表中的所有更改,并在组件上设置一个状态变量 ... const [density, setDensity] = useState<GridDensity>(); ... const actionEdit: GridColDef = { fie

我想在用户更改密度表时更改操作图标大小: 当行变小时,右侧的笔图标应改变大小,如下所示:

目前,我使用onStageChange捕获表中的所有更改,并在组件上设置一个状态变量

           ...
           const [density, setDensity] = useState<GridDensity>();
           ...
           const actionEdit: GridColDef = {
            field: '',
            type: 'action',
            align: 'right',
            disableColumnMenu: true,
            disableClickEventBubbling: true,
            resizable: false,
            flex: 1,
            headerClassName: 'edit-theme-header',
            cellClassName: 'edit-theme-cell',
            renderCell: () => <EditAction size={density} onClick={() => alert('click')} />
          };
           ... 
           <XGrid
                .....
                onStateChange={(v) => setDensity(v.state.density.value)}
            />
。。。
const[density,setDensity]=useState();
...
常量actionEdit:GridColDef={
字段:“”,
键入:“操作”,
对齐:“右”,
disableColumnMenu:true,
disableClickEventBubbling:true,
可调整大小:false,
弹性:1,
headerClassName:“编辑主题标题”,
cellClassName:“编辑主题单元格”,
renderCell:()=>警报('click')}/>
};
... 
setDensity(v.state.density.value)}
/>
它可以工作,但onStateChange用于所有状态更改(不仅仅是密度)。
有更好的方法吗?:)

您可以为图标大小声明另一个状态,并在
onStateChange
中更改它

onStateChange={(v)=>{
设置密度(v.状态密度值);
//此处设置图标大小状态
}

然后,将该状态值用作图标大小道具。

谢谢您的回复,但我的问题并不存在。网格上的所有事件都将调用“setDensity”,而不仅仅是在密度改变时。它并没有真正优化:)