在React.js Material-UI中设置BottomNavigation的样式

让我思考一下

如何将所选链接(在此示例中为“家”)的图标和文本的颜色更改为红色,而将非活动链接(在此示例中为“课程”和“作者”)的图标和文本的颜色更改为绿色?该文档非常薄。

在此处输入图片说明

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
瑞安·科格斯威尔(Ryan Cogswell)

大多数Material-UI组件都有三个单独的信息源:

API文档中的每个组件文档都可以通过classes属性传递类,以覆盖组件不同方面的样式。

在这种情况下,我们关心的组件是BottomNavigationActionAPI文档CSS部分中,您将找到:

root 应用于根元素的样式。

selected 如果选中,则应用于根元素的样式。

看到这个,您可以先尝试:

const styles = {
  root: {
    color: "green"
  },
  selected: {
     color: "red"
  }
};

这几乎可以解决问题。无效的动作为绿色,但所选的动作为红色文本,但图标颜色不受影响。当样式不能按您预期的那样正常工作时,下一个要看的地方是源代码,以了解如何在组件中完成样式。

以下是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: {},
});

如果我们根据覆盖结构的构造模型来覆盖,我们会找到成功。最终结果如下所示:

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);

编辑wq02759kk

这是我在Stack Overflow中获得的一些其他资源,这些资源已经回答了一些有关其他Material-UI组件的类似问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bootstrap与Material UI for React?

React Material UI BottomNavigation组件路由问题

如何在React Material-UI日期选择器中设置天按钮的样式

如何根据Material UI(React JS)的要求制作“选择”组件

如何根据Material UI(React JS)的要求制作“选择”组件

React JS:应用Material-UI CssBaseline

如何在React中的外部文件上设置Material UI(withStyle)样式?

React Material-UI-样式标签

在React的Material UI中覆盖样式

React Material UI onFocusOut

React.js-Material-ui DataGrid禁用行宽

React js Material UI Switch组件在循环中

React + Material UI-使用样式覆盖组件中的MuiTheme

React Material UI网格

在Material UI React中设置样式/更改自动完成关闭图标

设置卡片的样式会导致TextField在Material UI + React中失去焦点

受控的禁用按钮Material UI-React JS

URL地址和分页。React.Js,Material-UI

使用 Material UI 中的 Dropdown 组件在 React JS 中设置和更新状态

React JS - 如何在 Dialog (material-ui) 的 PaperProps 中添加样式

Material-UI 主题停止工作升级 @material-ui/core & @material-ui/styles (REACT & Next.js)

React.js 中的 Material UI ListItem 选定样式

React.js,Material Ui Stepper 方向

Material UI DatePicker 在 React Js 中不显示更新时间

React Material UI 滑块

更改 AppBar Material UI React 中按钮的样式

React Material UI 按钮覆盖 hove 样式

未调用 Material UI (React.js) 中的函数调用

使用 defaultProps 设置样式的 React Material UI v5