Material-UI 5 DataGrid 样式在组件之间没有隔离

IT技术 reactjs material-ui
2021-04-15 07:20:48

我刚刚从 Material-UI v4 升级到 v5(现在是 MUI)。如果我有一个DataGrid组件和一个类似Select组件的组件(aMenuItem也有问题),该Select组件将无法正常工作。加载的一些附加样式会DataGrid干扰它。

我将在此处展示的示例是,值不再是下拉列表,而是水平列出,所有这些值都被粉碎在一起。请注意,DataGrid此演示有意为空。

当 DataGrid 存在时,选择下拉菜单不起作用

与这样的预期功能相反:

选择下拉按预期工作

我已将代码放在CodeSandbox 上

请注意,"@mui/x-data-grid": "^4.0.0"它依赖于"@material-ui/core": "^4.12.3". 我对此感到不舒服,但它确实将其列为依赖项(除非我在某处遗漏了某些东西)。

是否有我遗漏的东西,或者DataGrid我正在使用的最新版本中是否存在错误顺便说一句,DataGrid我实际应用程序中的所有功能都运行良好。

为了完整起见,我还将在此处包含代码:

import React from "react";
import { render } from "react-dom";

import { DataGrid } from "@mui/x-data-grid";
import Select from "@mui/material/Select";
import MenuItem from "@mui/material/MenuItem";

function App() {
  return (
    <div>
      <Select>
        <MenuItem value={10}>Ten</MenuItem>
        <MenuItem value={20}>Twenty</MenuItem>
        <MenuItem value={30}>Thirty</MenuItem>
      </Select>
      {/* with DataGrid, Select will shown options on one line */}
      {/* comment out DataGrid and the select will work */}
      <DataGrid rows={[]} columns={[]} /> 
    </div>
  );
}
render(<App />, document.querySelector("#root"));

package.json 文件是:

{
  "name": "mui-datagrid-isolation-issue",
  "version": "5.0.0",
  "description": "",
  "keywords": [],
  "main": "index.js",
  "dependencies": {
    "@emotion/react": "latest",
    "@emotion/styled": "latest",
    "@mui/material": "^5.0.1",
    "@mui/styles": "^5.0.1",
    "@mui/x-data-grid": "^4.0.0",
    "@material-ui/core": "^4.12.3",
    "react": "latest",
    "react-dom": "latest"
  }
}
2个回答

您使用的@mui/x-data-grid是使用 JSS 的v4 ,而 MUI 组件使用的是使用情感的 v5。旧版本的 JSS 样式覆盖了导致意外结果的情感样式。

要修复它,请安装下一个版本 (v5)@mui/x-data-grid以便它与 MUI v5 兼容,并@material-ui/corepackage.json.

npm install @mui/x-data-grid@next

您可以随时查看docs演示中的package.json文件,以了解工作项目的样子。

谢谢!!这终于解决了我的问题
2021-06-02 07:20:48

感谢您的回答@NearHuscarl。我没有评论的声誉。我花了一段时间才弄清楚这一点,因为MUI 数据网格组件演示页面的文档仍然指向npm install @mui/x-data-grid,这导致为 MUI5 安装了错误的包。

这里的安装指南现在指向下一个版本。
2021-06-15 07:20:48