należy użyć getStyles
z material-ui/AppBar/AppBar
i przekazać styl do elementu dziecka (FlatButton
, IconMenu
, ...). Aby użyć getStyles
, musisz uzyskać muiTheme
w kontekście z deklaracją contextTypes
.
UWAGA: Jeśli chcesz używać zarówno FlatButton, jak i IconMenu, musisz dostosować najwyższą pozycję FlatButton ze względu na wielkość różnicy między FlatButton i IconMenu. (hasIconMenu == true
wzór)
import React from 'react';
import AppBar from 'material-ui/AppBar';
import { getStyles } from 'material-ui/AppBar/AppBar';
import MenuItem from 'material-ui/MenuItem';
class App extends React.Component {
static get contextTypes() {
return { muiTheme: React.PropTypes.object.isRequired };
}
render() {
const styles = getStyles(this.props, this.context);
const { button: { iconButtonSize }} = this.context.muiTheme;
const { appBar } = this.context.muiTheme;
const hasIconMenu = false;
let iconMenu = null;
if (hasIconMenu) {
styles.flatButton.top = -styles.flatButton.marginTop;
styles.flatButton.marginTop = 0;
iconMenu = (
<IconMenu
iconStyle={styles.iconButtonIconStyle}
iconButtonElement={<IconButton><MoreVertIcon /></IconButton>}
targetOrigin={{horizontal: 'right', vertical: 'top'}}
anchorOrigin={{horizontal: 'right', vertical: 'top'}}
>
<MenuItem primaryText="Refresh" />
<MenuItem primaryText="Help" />
<MenuItem primaryText="Sign out" />
</IconMenu>
);
}
const rightIcons = (
<div>
<FlatButton label="My Channels" style={styles.flatButton} />
<FlatButton label="Favorite" style={styles.flatButton} />
<FlatButton label="Login" style={styles.flatButton} />
{iconMenu}
</div>
);
return (
<div>
<AppBar
title="Title"
iconElementRight={rightIcons}
/>
{this.props.children}
</div>
);
}
Jeśli to zrobisz, twoje komponenty nie będą wyśrodkowane pionowo. Możesz to zrobić dodając płaskie przyciski do ikonyRightElement prop – Golinmarq
Wierzę, że to iconElementRight: http://www.material-ui.com/#/components/app-bar –
To rzeczywiście działa, ale musisz zadzierać ze stylami. –