Mow*_*zer 4 reactjs material-ui jss
如何将所选链接(本例中为主页)的图标和文本颜色更改为红色,将非活动链接(本例中为课程和作者)的图标和文本颜色更改为绿色?文档很薄。
class MyBottomNavigation extends Component {
render() {
return (
<Paper zDepth={1}>
<BottomNavigation selectedIndex={this.state.selectedIndex}>
<BottomNavigationItem
label="Home"
icon={recentsIcon}
/>
<BottomNavigationItem
label="Course"
icon={favoritesIcon}
/>
<BottomNavigationItem
label="Authors"
icon={nearbyIcon}
/>
</BottomNavigation>
</Paper>
)
}
}
export default MyBottomNavigation
Run Code Online (Sandbox Code Playgroud)
Rya*_*ell 10
大多数 Material-UI 组件都有三个独立的信息源:
源代码。API 页面底部附近将出现一个链接,例如
由于以下自定义点之一,您可以覆盖组件的样式:
- 带有
classes对象 prop的规则名称。- 具有全局类名。
- 有一个主题和一个
overrides属性。
API 文档中的每个组件都记录了您可以通过classes属性传入的类,以覆盖组件不同方面的样式。
在这种情况下,我们关心的组件是BottomNavigationAction. 在API 文档的CSS部分,您会发现:
root应用于根元素的样式。
selected如果选中,则应用于根元素的样式。
看到这个你可能会先尝试:
const styles = {
root: {
color: "green"
},
selected: {
color: "red"
}
};
Run Code Online (Sandbox Code Playgroud)
这几乎可以解决问题。非活动操作为绿色,但所选操作为红色文本,但图标颜色不受影响。当样式不像您预期的那样工作时,下一个要查看的地方是源代码,以查看样式是如何在组件中完成的。
下面是BottomNavigationAction样式的简化版本(我只包含了与控制这两种颜色相关的部分):
export const styles = theme => ({
/* Styles applied to the root element. */
root: {
color: theme.palette.text.secondary,
'&$selected': {
color: theme.palette.primary.main,
},
},
/* Styles applied to the root element if selected. */
selected: {},
});
Run Code Online (Sandbox Code Playgroud)
如果我们根据它的结构来模拟我们的覆盖,我们就会发现成功。最终结果如下:
import React from "react";
import Paper from "@material-ui/core/Paper";
import BottomNavigation from "@material-ui/core/BottomNavigation";
import BottomNavigationAction from "@material-ui/core/BottomNavigationAction";
import RestoreIcon from "@material-ui/icons/Restore";
import FavoriteIcon from "@material-ui/icons/Favorite";
import LocationOnIcon from "@material-ui/icons/LocationOn";
import { withStyles } from "@material-ui/core/styles";
const styles = {
root: {
color: "green",
"&$selected": {
color: "red"
}
},
selected: {}
};
class MyBottomNavigation extends React.Component {
render() {
const actionClasses = this.props.classes;
return (
<Paper zDepth={1}>
<BottomNavigation value={1} showLabels={true}>
<BottomNavigationAction
classes={actionClasses}
label="Home"
icon={<RestoreIcon />}
/>
<BottomNavigationAction
classes={actionClasses}
label="Course"
icon={<FavoriteIcon />}
/>
<BottomNavigationAction
classes={actionClasses}
label="Authors"
icon={<LocationOnIcon />}
/>
</BottomNavigation>
</Paper>
);
}
}
export default withStyles(styles)(MyBottomNavigation);
Run Code Online (Sandbox Code Playgroud)
以下是我在 Stack Overflow 上回答的一些关于其他 Material-UI 组件的类似问题的其他资源:
| 归档时间: |
|
| 查看次数: |
9875 次 |
| 最近记录: |