Ash*_*wal 5 reactjs material-ui react-redux
我正在"material-ui": "^1.0.0-beta.33"为我的项目使用。我想做的是在react组件内部动态设置主调色板颜色(颜色将从某些api中获取)。基本上我想覆盖以下内容:
const theme = createMuiTheme({
palette: {
primary: "some color from api"
},
})
Run Code Online (Sandbox Code Playgroud)
有没有办法在componentDidMount任何组件的功能中对此进行设置?
我创建了一个使用 MuiThemeProvider 的组件,并将整个应用程序围绕该组件包装。下面是该组件的结构。
import React, {Component} from "react";
import {connect} from "react-redux";
import {withStyles} from 'material-ui/styles';
import * as colors from 'material-ui/colors';
import { MuiThemeProvider, createMuiTheme } from 'material-ui/styles';
import { withRouter } from 'react-router-dom';
export class ThemeWrapperComponent extends Component {
constructor(props){
super(props);
}
render(){
return (
<MuiThemeProvider theme={createMuiTheme(
{
palette: {
primary: { main: **colorFromApi** },
}
)}>
<div>
{ this.props.children }
</div>
</MuiThemeProvider>
)
}
}
export const ThemeWrapper = withRouter(connect(mapStateToProps)(ThemeWrapperComponent));
Run Code Online (Sandbox Code Playgroud)
下面是我如何围绕这个组件包装我的应用程序:
<ThemeWrapper>
<div>
<Routes/>
</div>
</ThemeWrapper>
Run Code Online (Sandbox Code Playgroud)
现在,您从 api 发送的任何颜色都会应用于整个主题。可以根据要求进行更多定制。
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |