首页 > 解决方案 > 一个具有多种主题样式的组件(Material-UI v5)

问题描述

想知道是否可以执行以下场景。我想创建一个新组件,它实际上是具有另一种样式(基于主题)的现有组件的副本。

让我们以 Button 为例,带有一个新的伪组件MyButton

MyButton -> is a Button

在我希望能够拥有的主题中

Theme {
    components: {
        MuiButton :  ....  // styles for <Button/>
        MyButton :  ....  // styles for <MyButton/> 
    }
}

因此,从样式的角度来看,我有两个不同的组件(它不是变体,因为两个组件可能都有自己的变体列表)。

作为一个惊人的好处,如果 MyButton 是一个使用 Button 类来创建更复杂组件的新组件的一部分,你会怎么做。

标签: material-ui

解决方案


目前,无法重置核心组件的样式,但在我们发布@material-ui/unstyled包之后,这将是可能的。核心组件基本上styled()是无样式组件的版本。话虽如此,开发人员可以styled()在无样式组件之上使用该实用程序,他们可以在其中定义不同的主题名称,从而产生不同的独立组件。


推荐阅读