0
這裏有被重複了很多,但我似乎無法把它清理乾淨,並有它的工作。具體來說,switch語句。我真的需要這個嗎?然而,似乎它需要通過muiTheme調色板這樣。另外,這些主題常量可以放在另一個文件,然後導入?如果是這樣,我還沒有成功。我怎麼能幹涸這種反應/材料UI代碼?
import React, { Component } from 'react';
import {
pinkA100,
pinkA200,
pinkA400,
cyan500,
cyan700,
grey100,
grey300,
grey400,
grey500,
grey600,
darkBlack,
fullBlack,
fullWhite,
white
} from 'material-ui/styles/colors';
import { fade } from 'material-ui//utils/colorManipulator';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import { BrowserRouter, Route } from 'react-router-dom';
import { connect } from 'react-redux';
import * as actions from '../actions';
import Header from './Header';
import Landing from './Landing';
const muiThemeLight = getMuiTheme({
palette: {
primary1Color: cyan500,
primary2Color: cyan700,
primary3Color: grey400,
accent1Color: pinkA200,
accent2Color: grey100,
accent3Color: grey500,
textColor: darkBlack,
alternateTextColor: white,
canvasColor: white,
borderColor: grey300,
disabledColor: fade(darkBlack, 0.3),
pickerHeaderColor: cyan500,
clockCircleColor: fade(darkBlack, 0.07),
shadowColor: fullBlack
}
});
const muiThemeDark = getMuiTheme({
palette: {
primary1Color: cyan700,
primary2Color: cyan700,
primary3Color: grey600,
accent1Color: pinkA200,
accent2Color: pinkA400,
accent3Color: pinkA100,
textColor: fullWhite,
secondaryTextColor: fade(fullWhite, 0.7),
alternateTextColor: '#303030',
canvasColor: '#303030',
borderColor: fade(fullWhite, 0.3),
disabledColor: fade(fullWhite, 0.3),
pickerHeaderColor: fade(fullWhite, 0.3),
clockCircleColor: fade(fullWhite, 0.12)
}
});
class App extends Component {
componentDidMount() {
this.props.fetchUser();
}
render() {
switch (this.props.muiTheme.theme) {
case 'lightTheme':
return (
<MuiThemeProvider muiTheme={muiThemeLight}>
<BrowserRouter>
<div>
<Header />
<Route exact path="/" component={Landing} />
</div>
</BrowserRouter>
</MuiThemeProvider>
);
case 'darkTheme':
return (
<MuiThemeProvider muiTheme={muiThemeDark}>
<BrowserRouter>
<div>
<Header />
<Route exact path="/" component={Landing} />
</div>
</BrowserRouter>
</MuiThemeProvider>
);
default:
return (
<MuiThemeProvider muiTheme={muiThemeLight}>
<BrowserRouter>
<div>
<Header />
<Route exact path="/" component={Landing} />
</div>
</BrowserRouter>
</MuiThemeProvider>
);
}
}
}
function mapStateToProps({ form, muiTheme, auth }) {
return { form, muiTheme, auth };
}
export default connect(mapStateToProps, actions)(App)
;
謝謝您的幫助!我嘗試了有條件的三元路線,但一定沒有把它做得很對。如果我將來添加另一個主題選項,是否有辦法爲這種類型的語句添加更多條件,或者返回到switch語句呢? –
@ D.Wall不,您可以使用一個對象來跟蹤選項。我更新了多個選項的答案。 – shawon191
再次感謝!這正是我想要做的! –