2017-04-02 96 views
0

提取颜色我想用一种颜色从我material-ui主题就像一个组件内:材料的UI:从主题

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

所以,我需要的是提取从目前提供的主题值。

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

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

React上下文中使用的“引擎盖下”的material-ui,所以我的解决方案是不是未来的证明 - MUI的实现可以改变 - 是否有任何方法以适当的(或推荐的)方式解决这个问题?

回答

3

是的,你有!使用muiThemeable ..

import muiThemeable from 'material-ui/styles/muiThemeable'; 
const MyComponent = props => (
    <UsersIcon color={props.muiTheme.palette.primary1Color} /> 
) 
export default muiThemeable()(MyComponent) 

from material-ui docs

1

如果您的颜色在运行时不会改变,您可以将这些常量存储在一个全局对象中,该对象用于初始化主题并在自定义组件中使用。这可以让你在保持代码干爽的同时不依赖于上下文。

+0

谢谢您的回答,我同意你这是要解决我的情况下,清洁的方式。但主题描述的方式让猜测主题可以是动态的。我想找到一个更“未来证明”的解决方案(不确定它存在...) – Freez