生产环境MUI Datagrid的renderCell内调用getValue返回undefined报错
问题原因
你使用的mui-datagrid 4.0.0-alpha.26属于早期测试版本,本身存在生产构建压缩后getValue方法内部逻辑失效的bug:该方法依赖的内部字段映射表会被生产环境的代码混淆功能破坏,导致读取字段时报错,开发环境未开启代码压缩所以不会触发该问题。
解决方案
- 首选方案:替换所有
params.getValue写法,直接从params.row对象读取对应字段,完全规避对getValue方法的依赖,改造成本极低且无兼容性问题:
把所有params.getValue('字段名')替换为params.row.字段名即可,改造后的核心代码示例:// edit列改造后 renderCell: (params) => ( <div> <EditProduct defaultCats={props.defaultCats} prodId={params.row.id} productIdGL={params.row.productId} /> </div> ), // active列改造后 renderCell: (params) => ( <div><CustomSwitch checked={Boolean(params.value)} onChange={() => myswitch(params.row.id, Boolean(params.value))} name="switch-" inputProps={{ 'aria-label': 'primary checkbox' }} ></CustomSwitch> </div> ), - 备选方案:升级mui-datagrid到4.0.0正式版及以上版本,该bug在后续稳定版已经修复,升级前注意核对API变更说明,避免其他兼容性问题。
- 不推荐的临时方案:调整生产构建配置,将mui-datagrid相关代码排除在变量混淆范围外,该方案会增大产物体积,仅做临时救急使用。
内容的提问来源于stack exchange,提问作者seserize
相关产品推荐
相关产品推荐

