【问题标题】:react-material kit-cant add a logo to headerreact-material kit-cant 在标题中添加徽标
【发布时间】:2019-04-05 19:49:48
【问题描述】:

我想在页面顶部添加我的标志,但我无法完成,这是代码

   import React from "react";
  import classNames from "classnames";
  import PropTypes from "prop-types";
 import withStyles from "@material-ui/core/styles/withStyles";
 import AppBar from "@material-ui/core/AppBar";
import Toolbar from "@material-ui/core/Toolbar";
import IconButton from "@material-ui/core/IconButton";
 import Button from "@material-ui/core/Button";
import Hidden from "@material-ui/core/Hidden";
import Drawer from "@material-ui/core/Drawer";
import Menu from "@material-ui/icons/Menu";
 import headerStyle from "../../assets/jss/material-kit-react/components/headerStyle.jsx";

 class Header extends React.Component {
 constructor(props) {
 super(props);
 this.state = {
  mobileOpen: false
 };
 this.handleDrawerToggle = this.handleDrawerToggle.bind(this);
 this.headerColorChange = this.headerColorChange.bind(this);
}
  handleDrawerToggle() {
  this.setState({ mobileOpen: !this.state.mobileOpen });
}
 componentDidMount() {
 if (this.props.changeColorOnScroll) {
  window.addEventListener("scroll", this.headerColorChange);
}
 }
 headerColorChange() {
const { classes, color, changeColorOnScroll } = this.props;
const windowsScrollTop = window.pageYOffset;
if (windowsScrollTop > changeColorOnScroll.height) {
  document.body
    .getElementsByTagName("header")[0]
    .classList.remove(classes[color]);
  document.body
    .getElementsByTagName("header")[0]
    .classList.add(classes[changeColorOnScroll.color]);
 } else {
  document.body
    .getElementsByTagName("header")[0]
    .classList.add(classes[color]);
  document.body
    .getElementsByTagName("header")[0]
    .classList.remove(classes[changeColorOnScroll.color]);
 }
}
componentWillUnmount() {
if (this.props.changeColorOnScroll) {
  window.removeEventListener("scroll", this.headerColorChange);
 }
}
render() {
const {
  classes,
  color,
  rightLinks,
  leftLinks,
  brand,
  fixed,
  absolute
 } = this.props;
 const appBarClasses = classNames({
  [classes.appBar]: true,
  [classes[color]]: color,
  [classes.absolute]: absolute,
  [classes.fixed]: fixed
 });
 const brandComponent = <Button className={classes.title}>{brand}</Button>;
 return (
  <AppBar className={appBarClasses}>
    <Toolbar className={classes.container}>
      {leftLinks !== undefined ? brandComponent : null}
      <div className={classes.flex}>
        {leftLinks !== undefined ? (
          <Hidden smDown implementation="css">
            {leftLinks}
          </Hidden>
        ) : (
          brandComponent
        )}
      </div>
      <Hidden smDown implementation="css">
        {rightLinks}
      </Hidden>
      <Hidden mdUp>
        <IconButton
          color="inherit"
          aria-label="open drawer"
          onClick={this.handleDrawerToggle}
        >
          <Menu />
        </IconButton>
      </Hidden>
    </Toolbar>
    <Hidden mdUp implementation="css">
      <Drawer
        variant="temporary"
        anchor={"right"}
        open={this.state.mobileOpen}
        classes={{
          paper: classes.drawerPaper
        }}
        onClose={this.handleDrawerToggle}
      >
        <div className={classes.appResponsive}>
          {leftLinks}
          {rightLinks}
        </div>
      </Drawer>
    </Hidden>
  </AppBar>
 );
}
}

Header.defaultProp = {
color: "white"
};

 Header.propTypes = {
classes: PropTypes.object.isRequired,
color: PropTypes.oneOf([
"primary",
"info",
"success",
"warning",
"danger",
"transparent",
"white",
"rose",
"dark"
]),
rightLinks: PropTypes.node,
leftLinks: PropTypes.node,
brand: PropTypes.string,
 fixed: PropTypes.bool,
absolute: PropTypes.bool,

changeColorOnScroll: PropTypes.shape({
height: PropTypes.number.isRequired,
color: PropTypes.oneOf([
  "primary",
  "info",
  "success",
  "warning",
  "danger",
  "transparent",
  "white",
  "rose",
  "dark"
 ]).isRequired
})
 };

 export default withStyles(headerStyle)(Header);

当我调用标题时,它是这样的

     <Header
      color="transparent"
      routes={dashboardRoutes}
      brand="my page"
      rightLinks={<HeaderLinks />}
      fixed
      changeColorOnScroll={{
        height: 400,
        color: "white"
      }}
      {...rest}
    />

我在标题部分尝试了一个组件,但它确实弄乱了我的标题,因为它很大而且我无法正确调整它的大小,有什么想法如何在不影响我的宽度/高度尺寸的情况下将徽标连接到此标题?

【问题讨论】:

    标签: css reactjs react-material


    【解决方案1】:

    brandComponent 在 if 中,属性 leftLinks 是未定义的,因为你没有将它传递给 &lt;Header /&gt;,所以你的 brandComponent 不会被渲染。

    尝试将 leftLink 属性传递给 Header,看看你的 brandComponent 是否会被渲染

    <Header
      color="transparent"
      routes={dashboardRoutes}
      brand="my page"
      rightLinks={<HeaderLinks />}
      leftLinks={LEFTLINKS_HERE}
      fixed
      changeColorOnScroll={{
        height: 400,
        color: "white"
      }}
      {...rest}
    />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 2012-12-20
      • 2014-06-12
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 2021-04-13
      • 2021-03-17
      相关资源
      最近更新 更多