是否可以限制组件样式而不是内联样式,以防止同一页面上的多个React应用覆盖?

wwsalmon

我有一个带有html的应用程序:

<div id="react-root-navbar"></div>
<div id="react-root-body"></div>

以及React.DOM.render每个div上调用的相应React组件

两个React组件都使用Material UI组件。因此,为每个组件注入了一组内联样式。

问题在于,第二个组件的所有样式在HTML中都将比第一个组件的样式更下层,因此这些CSS规则将具有更高的优先级。这会中断预期的级联流程,并导致许多错误的样式。例如,.MuiAppBar-colorPrimary被否决.MuiPaper-root

级联中断的屏幕截图

我知道理想的解决方案是将所有组件包含在单个React应用程序中,并从一开始就防止重复导入。但是,在我正在使用的代码库中,这是不可能的,它使用Django前端一次迁移一件代码到React。

是否有任何方法可以使Material UI为每个组件导出的样式专门针对该组件,以使样式不会彼此覆盖?

wwsalmon

MUI具有StylesProvider允许您调整样式添加方式的组件StylesProvider有一个道具generateClassName,您可以将其传递给生成器,以确定如何生成类名。

您可以使用MUI函数创建一个生成器createGenerateClassName,可以向其传递disableGlobal将简单后缀添加到类名的选项,以便每个应用程序都可以应用范围内的CSS。

我已经将所有MUI组件包装在一个组件中MUIThemeProvider以使用MUI组件ThemeProvider我刚刚添加StylesProvider到此包装器中:

const generateClassName = createGenerateClassName({
    disableGlobal: true,
});

return (
    <StylesProvider generateClassName={generateClassName}>
        <ThemeProvider theme={theme}>
            {props.children}
        </ThemeProvider>
    </StylesProvider>
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在同一页面上放置多个d3图表,但应用不同的样式

来自分类常见问题

使用SoapUI时,是否可以在同一页面上显示多个请求?

来自分类Dev

使用SoapUI时,是否可以在同一页面上显示多个请求?

来自分类Dev

在同一页面上加载 ReactJS 组件覆盖其他组件

来自分类Dev

同一页面上多个文本区域的字符数限制倒计时?

来自分类Dev

Angular 2同一页面上有多个组件

来自分类Dev

同一页面上的多个KnockoutJs组件分别运行

来自分类Dev

React Router问题:React在同一页面上渲染两个组件

来自分类Dev

验证同一页面上的多个表单

来自分类Dev

同一页面上有多个Slickgrid

来自分类Dev

多个计算,显示在同一页面上

来自分类Dev

同一页面上的多个ClojureScript文件

来自分类Dev

烧瓶-同一页面上的多个分页

来自分类Dev

同一页面上的多个模板

来自分类Dev

在同一页面上设置多个表单/验证

来自分类Dev

同一页面上的多个不同CKeditor实例

来自分类Dev

同一页面上的多个AjaxLazyLoadPanel Wicket 8

来自分类Dev

多个计算,显示在同一页面上

来自分类Dev

在同一页面上显示多个Google图表

来自分类Dev

在同一页面上使用多个指令

来自分类Dev

同一页面上的多个jquery版本

来自分类Dev

同一页面上的多个模板

来自分类Dev

同一页面上的多个WebGL模型

来自分类Dev

同一页面上的多个Google街景视图

来自分类Dev

同一页面上的多个输入 [type=file]

来自分类Dev

在同一页面上移动多个 div

来自分类Dev

在同一页面上烧瓶多个表单

来自分类Dev

如何在同一页面上运行多个应用程序部分

来自分类Dev

附言3是否允许在同一页面上使用多个半色调网屏?

Related 相关文章

热门标签

归档