Material-ui :从主题中提取颜色

2024-05-22

我想使用我的颜色material-ui像这样的组件内的主题:

const MyComponent = props => (
   <UsersIcon color={currentTheme.primary1Color} />
)

所以,我的需要是从当前提供的主题中提取一个值。

我找到了一个可行的解决方案来解决这种情况,使用上下文来检索当前主题:

const MyComponent = (props, {muiTheme}) => (
    <UsersIcon color={muiTheme.palette.primary1Color} />
)
contextTypes = {
    muiTheme: PropTypes.object.isRequired,
}

The React上下文是在“幕后”使用的material-ui,所以我的解决方案不是面向未来的——实施MUI可以改变 - 有什么方法可以以正确(或推荐)的方式解决这个问题?


You can access https://material-ui.com/styles/advanced/#accessing-the-theme-in-a-component反应主题变量hook或与higher-order成分。

带钩子的示例:

//...
import { useTheme } from '@material-ui/core/styles';

const MyComponent = () => {
    const theme = useTheme();
    return <UsersIcon color={theme.palette.primary.main} />
}

HOC 示例:

//...
import { withTheme } from '@material-ui/core/styles';

const MyComponent = ({theme, ...other}) => {
    return <UsersIcon color={theme.palette.primary.main} />
}

export default withTheme(MyComponent)

不要忘记将根应用程序组件包装为ThemeProvider

另一种值得一提的方法是makeStyles for CSS-in-JS造型:

//...
import { makeStyles } from '@material-ui/core/styles'
const useStyles = makeStyles(theme => ({
  icon: {
    color: theme.palette.primary.main
  }
}))

const MyComponent = () => {
  const classes = useStyles()
  return <UsersIcon className={classes.icon} />
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Material-ui :从主题中提取颜色 的相关文章

随机推荐

  • WPF 如何从 DataGrid 转换为 DataTable?

    嗨 我正在关注这个guide http www wpf tutorial com datagrid control details row 以了解如何使用 DataGrid 我遇到的问题是如何将 DataGrid 中的数据转换为 DataT
  • 如何在 Unity 中对齐“轨道”或模块化对象?

    我正在开发一个简单的游戏 用户可以在其中放置不同但模块化的对象 例如 轨道 道路等 我的问题是 当将一个物体靠近另一个物体时 如何匹配和放置不同的物体 我的第一种方法是为每个模块对象创建一个隐藏的子对象 一个盒子 并将其放在可以放置其他对象
  • 将 TypeScript 项目与 Webpack 捆绑时,Node.js 提示“ReferenceError: require is not Define”

    我有一个简单的test ts我想使用 webpack 捆绑的文件 该文件包含一些代码和以下导入 没有任何错误 import from interval Observable of pipe Subject timer BehaviorSub
  • 对 numpy 数组中存在的元组中的列进行切片

    我已将一个文本文件导入到 numpy 数组中 如下所示 data np genfromtxt f dtype None delimiter names None 其中 f 包含我的 csv 文件的路径 现在数据包含以下内容 array 53
  • 安装 libjpeg v8 到 /opt/local

    如何在 OSX 上将 libjpeg 8 安装到 opt local 我问的原因是我想用以下方法制作大脑活动的小电影MNE C 库 http www nmr mgh harvard edu martinos userInfo data MN
  • 使用 PyArg_ParseTuple 解析用户定义类型

    如何使用解析用户定义的类型 或现有非标准库中的类型 PyArg ParseTuple 而不是使用普通的O格式 正如 Martijn 建议的那样 我通常更喜欢使用 它允许您传递一个函数 该函数将被调用以转换任何PyObject 到任意 C 双
  • 测试后 NUnit 回滚

    我对 NUnit 以及一般的自动化测试 还很陌生 我最近做了一些 Ruby On Rails 工作 并注意到在我的测试套件中 当我创建对象 例如新用户 并在套件过程中提交它们时 它们永远不会提交到数据库 以便我可以运行一遍又一遍地测试 不用
  • asp.net datalist 选择每个类别的所有复选框

    我有一个页面 用户可以在数据列表控件中选择不同的文档文件 使用预渲染事件处理程序根据类别对文档进行分类 文档是根据复选框控件 而不是复选框列表 选择的 到目前为止 一切都很好 接下来我想要发生的事情是在每个类别名称旁边放置一个 全选 复选框
  • Java异常处理——捕获超类异常

    我有一个关于处理网络应用程序异常的问题 我经常听说捕获超类 Exception 是一个坏主意 我经常编写代码来捕获 struts action java servlet 类中的所有异常 try call business facade bu
  • Angular核心模块的作用是什么?

    我读了一篇article https medium com michelestieven organizing angular applications f0510761d65a关于在 Angular 中组织文件夹 作者使用了一个名为cor
  • 在 php 标头中使用 x-auth-token 发送请求

    如何将 x auth token 参数发送到带有 YII 标头的服务器 我有这个代码 data array customerId gt userId getdata http build query data options array h
  • 关于Braintree支付网关与Java的集成

    我是支付网关集成的新手 我需要集成Braintree Payment Gateway与 JSF 应用程序 有人可以向我展示 java 类的基本示例和示例支付页面吗 我看到一些客户端Token如何生成它 我编写了一个示例类和页面 如下所示 但
  • 使用 XSL 1.0 有条件地包装内容

    我正在寻找一种用 xsl 包装内容的方法 这是我正在做的事情的简化示例 Lot s of content 是大量内容 锚标记仅用作示例 它可以是一个 div 或其他任何东西 XML
  • Swift - UICollectionView 重复(重复)单元格

    你好 我有一个数组 其中包含从 flickr 获取的 100 张图片 url 当我使用 UICollectionView 时 我显示 100 个单元格 屏幕上只有 8 个单元格 当我向下滚动查看下一个 8 个单元格时 它们与前一个单元格相同
  • AJAX 是如何工作的?

    AJAX的本质是什么 例如 我想在我的页面上有一个链接 这样当用户单击此链接时 一些信息就会发送到我的服务器 而无需重新加载当前页面 那是阿贾克斯吗 我能够通过使用 isoframe 来实现这种行为 更详细地说 我在一个小 isoframe
  • Android 应用程序因 Firebase 电话身份验证而崩溃

    我正在使用 firebase 进行电话号码身份验证 当我使用我的电话号码时 它会自动验证它 但是当我使用另一个电话号码时 我得到类转换异常 它说 getGoogleApiForMethod 返回 Gms stackoverflow上也有类似
  • 如何创建具有不同“产品模块名称”和“产品名称”的项目并将其模块导入另一个项目?

    我尝试执行问题中描述的任务但失败了 重现步骤 Create new workspace WS Create new Cocoa Touch Framework set Product Name Product in Choose optio
  • 无法连接到 SMTP 服务器

    我有一个支持邮件的服务器 比如说example com 我配置了服务器并通过cpanel添加了MX记录 这样我就可以通过outlook com有地址 email protected cdn cgi l email protection MX
  • KDoc:插入代码片段

    如何在 Kotlin 的默认文档工具 KDoc 中插入代码片段 在 Java 中 我可以使用以下内容 Example usage pre code 64 JavaAnnotation public void foo Code code pr
  • Material-ui :从主题中提取颜色

    我想使用我的颜色material ui像这样的组件内的主题 const MyComponent props gt