@mui/x-data-grid 7.3.0中valueGetter函数params为undefined问题求助
问题排查与解决方案
针对你在@mui/x-data-grid 7.3.0中遇到的valueGetter参数params为undefined的问题,可按以下步骤排查:
1. 为params添加防御性默认值
先修改valueGetter函数,避免因params为undefined导致报错,同时再次验证参数传递情况:
const columns = dates.map((date) => ({ field: date, headerName: date, width: 150, valueGetter: (params = {}) => { console.log('当前params:', params); // 打印确认参数状态 const row = params.row || {}; return row.shares?.[date] || 0; }, }))
2. 升级组件版本
@mui/x-data-grid 7.3.0存在部分已知的参数传递异常问题,这类valueGetter参数失效的情况在后续7.x稳定版本(如7.5.0及以上)中已修复,建议升级至最新版验证。
3. 验证动态列的生成逻辑
若升级版本后问题仍存在,可临时替换为硬编码的测试列,排查是否是动态生成列时的变量作用域或数据异常:
// 临时测试列 const testColumns = [ { field: '23/05/2024', headerName: '23/05/2024', width: 150, valueGetter: (params) => { console.log('测试params:', params); return params.row.shares?.['23/05/2024'] || 0; }, }, ]; // 使用测试列替代动态生成的columns <DataGrid rows={rows} columns={testColumns} pageSize={5} rowsPerPageOptions={[5]} />
如果测试列能正常获取params,说明dates数组的生成逻辑可能存在数据格式或变量污染问题,需进一步排查transformData函数的返回值。
4. 确认行数据的字段匹配
检查dates数组中的日期字符串,与rows里shares对象的键是否完全一致(包括大小写、斜杠格式、无额外空格),格式差异虽不会直接导致params为undefined,但会影响最终返回值的正确性。
内容的提问来源于stack exchange,提问作者Moïse Mulungu
相关产品推荐
相关产品推荐

