MUI X DataGridPro自定义工具栏报Could not find the data grid context问题咨询
问题成因
- 包导入混淆:项目同时安装了
@mui/x-data-grid(社区版)和@mui/x-data-grid-pro(专业版)两个包,若从社区版包导入工具栏相关组件(比如GridToolbar、GridToolbarColumnsButton等),而外层使用的是专业版的DataGridPro组件,两个包的上下文实例不互通,就会找不到对应的Grid上下文。 - 组件挂载位置错误:自定义工具栏组件没有作为
DataGridPro的components属性中Toolbar的对应值传入,直接在DataGridPro组件外部渲染,导致无法访问到DataGrid内部注入的上下文。 - 版本不匹配:两个DataGrid相关包版本虽然都标注为^4.0.0,但实际安装的小版本存在差异,上下文API不兼容导致识别失败。
解决方案
- 统一组件导入来源:所有和Data Grid相关的组件(包括
DataGridPro、所有工具栏组件)统一从@mui/x-data-grid-pro包导入,不要混用@mui/x-data-grid的导出,不需要的话可以直接卸载社区版包:npm uninstall @mui/x-data-grid。 - 正确挂载自定义工具栏:将拆分后的自定义工具栏组件,通过
DataGridPro的components属性传入,示例代码如下:
import { DataGridPro } from '@mui/x-data-grid-pro'; import CustomToolbar from './CustomToolbar'; // 拆分的独立工具栏组件 function MyGrid() { return ( <div style={{ height: 600, width: '100%' }}> <DataGridPro rows={rows} columns={columns} components={{ Toolbar: CustomToolbar // 在此处传入,不要在DataGridPro外部直接渲染CustomToolbar }} /> </div> ); }
- 统一依赖版本:确保
@mui/x-data-grid-pro和项目中其他MUI相关依赖版本兼容,4.x版本的Data Grid适配Material UI 4.x,你的核心依赖版本符合要求,可重新安装依赖锁定版本:删除node_modules和package-lock.json/yarn.lock后重新执行安装命令。
内容的提问来源于stack exchange,提问作者Jabal Logian
相关产品推荐
相关产品推荐

