2017-04-02 97 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