Material-UI ThemeProvider 全局覆盖样式,而不是仅覆盖组件

问题描述

我有一个带有多个 Material-UI 选择的 React 组件。现在我想覆盖其中之一的一些样式,所以我创建了一个主题,现在想通过 ThemeProvider 应用它。 我的问题是 ThemeProvider 会覆盖每个 Select 的样式,而不仅仅是它所环绕的样式。

在谷歌搜索时,我发现了很多问题,如何让 ThemeProvider 在全球范围内应用其覆盖,但这与我想要做的相反。 我希望 ThemeProvider 仅将其覆盖应用到它所环绕的组件。 在我的用例中是否有更好的替代方案来使用 ThemeProvider?如果是,它必须使用基于类的组件(因为我在这里使用一个

显示我的问题的代码沙盒:https://codesandbox.io/s/twilight-sun-vyl9i

我对 Material-UI 还很陌生,所以如果我做错了什么,请原谅我。

解决方法

好的,我自己找到了解决方案。根据此 issue on the material-ui github ,存在一个 v4 错误,即多个 ThemeProviders 必须具有父 ThemeProvider 元素。据他们说,它将在即将到来的 v5 中修复。

所以我所做的,我只是在我的 <ThemeProvider> 周围包裹了一个 <div className="App"> 而没有给它一个 theme 道具。