Reactjs 如何通过参数覆盖材质UI类

Reactjs 如何通过参数覆盖材质UI类,reactjs,material-ui,Reactjs,Material Ui,我想通过父级的参数覆盖芯片删除图标的颜色。样式需要动态设置。该参数将样式作为对象保存。通常情况下,删除图标将设置样式。我无法使用样式属性访问删除图标。下面的尝试无效 const styles = { deleteIcon: { color: 'white'}}; export const ChipsCustom = (styles) => { const ele = (data, classes) => { return ( <Chip

我想通过父级的参数覆盖芯片删除图标的颜色。样式需要动态设置。该参数将样式作为对象保存。通常情况下,删除图标将设置样式。我无法使用样式属性访问删除图标。下面的尝试无效

const styles = { deleteIcon: { color: 'white'}};

export const ChipsCustom = (styles) => {

  const ele = (data, classes) => {

    return (
      <Chip
        classes={{
          deleteIcon: classes.deleteIcon,
        }}
      />
    );
  };
  return withStyles(styles)(ele);
};

下面是工作代码沙盒,在这里,类作为道具传递给孩子们:


codesandbox实现有什么问题?@SakhiMansoor如何从组件外部更改颜色?e、 g.对于绿色,您的意思是父组件将颜色作为道具发送?你不想使用常量样式吗?是吗?@SakhiMansoor是的!我在下面给出了一个解释,你可以问进一步的问题
import React from "react";
import PropTypes from "prop-types";
import { withStyles } from "@material-ui/core/styles";
import Avatar from "@material-ui/core/Avatar";
import Chip from "@material-ui/core/Chip";
import FaceIcon from "@material-ui/icons/Face";
import DoneIcon from "@material-ui/icons/Done";

const styles = theme => ({
  root: {
    display: "flex",
    justifyContent: "center",
    flexWrap: "wrap"
  },
  chip: {
    margin: theme.spacing.unit,
    color: "blue",
    "&:hover": {
      background: "#ff9814"
    }
  },
  deleteIcon: {
    color: "green"
  }
});

function handleDelete() {
  alert("You clicked the delete icon."); // eslint-disable-line no-alert
}

function handleClick() {
  alert("You clicked the Chip."); // eslint-disable-line no-alert
}

//Parent Component

function CustomChips(props) {
  const { classes } = props;
  return <MyChip classes={classes} />;
}

//Child Component

function MyChip(props) {
  const { classes } = props; //props are coming from parent

  console.log(classes);
  return (
    <div className={classes.root}>
      <Chip
        label="Deletable Chip"
        onDelete={handleDelete}
        classes={{
          root: classes.chip,
          deleteIcon: classes.deleteIcon
        }}
      />
    </div>
  );
}

CustomChips.propTypes = {
  classes: PropTypes.object.isRequired
};

export default withStyles(styles)(CustomChips);