【问题标题】:makeStyle does not work with custom componentmakeStyle 不适用于自定义组件
【发布时间】:2020-09-30 13:26:27
【问题描述】:

我正在尝试使用带有几个按钮和自定义下拉菜单组件的材质 ui 制作一个简单的导航栏。当我尝试使用 makeStyle 钩子对其进行样式设置时,样式仅适用于材质 ui 的按钮和标题,但不适用于自定义下拉组件。

import React, { useContext } from "react";
import { makeStyles } from "@material-ui/core/styles";
import { AppBar, Toolbar, Typography } from "@material-ui/core";
import DropDown from "./DropDown";
import { Button } from "@material-ui/core";
import { AlgoContext } from "../AlgoContext";

const useStyles = makeStyles((theme) => ({
  item: {
    marginRight: theme.spacing(5),
  },
}));

const MainHeader = () => {
  const classes = useStyles();
  const [algo, setAlgo] = useContext(AlgoContext);
  return (
    <div>
      <AppBar elevation={0} position='static'>
        <Toolbar>
          <Typography variant='h6' className={classes.item}>
            Pathfinding Visualiser
          </Typography>
          <Button variant='contained' className={classes.item}>
            Visualise {algo.type}
          </Button>
          <DropDown className={classes.item}></DropDown>
          <Button variant='contained' className={classes.item}>
            Clear walls
          </Button>
          <Button variant='contained' className={classes.item}>
            Clear path
          </Button>
        </Toolbar>
      </AppBar>
    </div>
  );
};

export default MainHeader;

【问题讨论】:

  • 向我们展示 DropDown 组件的代码。这可能是因为您将 prop className 传递给 DropDown,但您从未在 DropDown 中的容器上使用它。

标签: reactjs material-ui


【解决方案1】:

className 是 React 元素的默认属性。您不能通过className 传递样式对象来设置自定义组件的样式。取而代之的是,您应该将其作为道具传递给DropDown 组件。试试这个:

const MainHeader = () => {
  const classes = useStyles();
  const [algo, setAlgo] = useContext(AlgoContext);
  return (
     <DropDown itemStyle={classes.item}></DropDown>
  );
};

export default MainHeader;

const DropDown = (props) => {
  ...
  return (
    <div className={props.itemStyle}>
      ...
    </div>
  )
}

【讨论】:

  • 在这种情况下,它也可以完美地与 className 作为属性一起使用,并且只需通过 className={props.className} ,我很确定他没有通过道具并且您的答案是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 2011-12-08
相关资源
最近更新 更多