如何更改React Material UI上的Stepper颜色?

Fre*_*nga 6 reactjs material-ui

在此输入图像描述

在上面的屏幕截图中,我试图将步骤颜色更改为:绿色表示正确,黄色表示正在进行,红色表示不正确.

我怎么能这样做?

小智 27

如果有人仍在寻找这个问题,对于 MUI 5,它是通过sx 属性styled

查看stepstepIcon的类是什么,以便您可以自定义样式。

<Box sx={{ width: '100%' }}>
  <Stepper activeStep={currentStep} alternativeLabel>
    {Object.keys(steps).map((stepNumber) => (
      <Step
        key={stepNumber}
        sx={{
          '& .MuiStepLabel-root .Mui-completed': {
            color: 'secondary.dark', // circle color (COMPLETED)
          },
          '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel':
            {
              color: 'grey.500', // Just text label (COMPLETED)
            },
          '& .MuiStepLabel-root .Mui-active': {
            color: 'secondary.main', // circle color (ACTIVE)
          },
          '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel':
            {
              color: 'common.white', // Just text label (ACTIVE)
            },
          '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {
            fill: 'black', // circle's number (ACTIVE)
          },
        }}>
        <StepLabel>{steps[stepNumber].label}</StepLabel>
      </Step>
    ))}
  </Stepper>
</Box>
Run Code Online (Sandbox Code Playgroud)


msm*_*fsd 12

更新:这是最新版本 3 的正确方法。您只需要通过引用将覆盖正确添加到您的主题MuiStepIcon

const theme = createMuiTheme({
  overrides: {
   MuiStepIcon: {
    root: {
      '&$completed': {
        color: 'pink',
      },
      '&$active': {
        color: 'red',
      },
    },
    active: {},
    completed: {},
  },
  palette: {
    ...
  }
})
Run Code Online (Sandbox Code Playgroud)


amw*_*l04 11

老问题,但万一有人在看.

您需要编辑主题并将其包装 getMuiTheme

import getMuiTheme from 'material-ui/styles/getMuiTheme'

const muiTheme = getMuiTheme({
    stepper: {
        iconColor: 'green' // or logic to change color
    }
})

<MuiThemeProvider muiTheme={muiTheme}>
    <Stepper>
        ...
    </Stepper>
</MuiThemeProvider>
Run Code Online (Sandbox Code Playgroud)

有关组件及其默认颜色调色板的完整列表,请参阅https://github.com/callemall/material-ui/blob/master/src/styles/getMuiTheme.js.

您将看到可以基于每个组件覆盖颜色和/或更改整体主题颜色.


All*_*ire 6

这是我以前使用类重写覆盖它的一种方式-所有其他属性保持不变。

const styles = theme => ({
  labelContainer: {
    "& $alternativeLabel": {
      marginTop: 0
    }
  },
  step: {
    "& $completed": {
      color: "lightgreen"
    },
    "& $active": {
      color: "pink"
    },
    "& $disabled": {
      color: "red"
    }
  },
  alternativeLabel: {},
  active: {}, //needed so that the &$active tag works
  completed: {},
  disabled: {},
  labelContainer: {
    "& $alternativeLabel": {
      marginTop: 0
    }
  },
});

class myStepper extends Component {

 render() {
   const { classes } = this.props;
   return(
        <Stepper
          activeStep={activeStep}
          alternativeLabel
          connector={connector}
          classes={{
            root: classes.root
          }}
        >
          {this.state.numberTasks.map(label => {
            return (
              <Step
                key={label}
                classes={{
                  root: classes.step,
                  completed: classes.completed,
                  active: classes.active
                }}
         >
        <StepLabel
          classes={{
            alternativeLabel: classes.alternativeLabel,
            labelContainer: classes.labelContainer
          }}
          StepIconProps={{
            classes: {
              root: classes.step,
              completed: classes.completed,
              active: classes.active,
              disabled: classes.disabled
            }
          }}
        >
          {this.state.labels[label - 1]} //label value here
        </StepLabel>
              </Step>
            );
          })}
        </Stepper>
);
}

export default withStyles(styles)(myStepper);
Run Code Online (Sandbox Code Playgroud)


Pio*_*r O 0

您需要更改StepLabel组件的 props 图标,如下所示:

<StepLabel
 icon={<WarningIcon color={red500} />}
 style={{color: red500}}
>
  Random label
</StepLabel>
Run Code Online (Sandbox Code Playgroud)

  • 这可行,但是当我更改图标时,我丢失了里面的数字。我如何将它们添加回来? (5认同)