我试图有一个固定的标题,右侧应该是选项卡。该<Toolbar />
组件负责块的响应,但不允许如此容易地拉伸选项卡。
如何使用 material-ui 在工具栏内拥有全高标签?
IT技术
reactjs
material-ui
2021-05-01 16:35:06
1个回答
问题是Toolbar响应性地改变了它的高度,而Tabs和Tab组件没有(Tabsmin-height
在其root
类中设置了48px ,Tab在其类中设置了高度root
)。
幸运的是,行为Toolbar
使用在主题混合中可用,因此您可以创建也使用此逻辑的类:
const styles = theme => ({
fullHeight: {
...theme.mixins.toolbar,
},
});
这将创建一个与Toolbar
组件中使用的响应高度逻辑相同的类。使用withStyles,你可以让你的组件可以访问这个类:
import { withStyles } from "material-ui/styles";
// ...
export default withStyles(styles)(Header);
这将添加一个classes
props,它是一个对象,其中包含提供给 的对象中定义的每个类的字符串属性withStyles
。您可以通过覆盖它们的根类来将其应用于Tabs
组件和每个Tab
组件,以确保它们填充:AppBar
render() {
const { classes } = this.props;
return (
<AppBar>
<Toolbar>
<Grid container alignItems="center" justify="space-between">
<Grid item>
<Typography color="inherit" variant="title">
BackTube
</Typography>
</Grid>
<Grid item>
<Tabs classes={{ root: classes.fullHeight }} onChange={this.changeTab} value={this.state.currentTab}>
<Tab classes={{ root: classes.fullHeight }} icon={<Magnify />} value="search" />
<Tab classes={{ root: classes.fullHeight }} icon={<FormatListBulleted />} value="lists" />
<Tab classes={{ root: classes.fullHeight }} icon={<Settings />} value="settings" />
</Tabs>
</Grid>
</Grid>
</Toolbar>
</AppBar>
);