【问题标题】:How to do an Stepper with progress bars Material-ui如何用进度条做一个步进器 Material-ui
【发布时间】:2021-03-10 12:18:45
【问题描述】:

我正在开发一个步进器,我想在每个步骤之间添加一个进度条。我正在使用 Material-ui Stepper 连接器来实​​现这一点。但是相同的连接器适用于所有步骤。这不是一个真正的问题,因为我可以使用 jss 来做到这一点。

bar: { transform: "translateX(-101%) !important" } // This rule can control progress bars

这里真正的问题是我不知道如何使用 jss 将规则添加到其中一个栏。

如果有更好的方法来添加进度条,那就太好了。我只是分享我的,以便为您提供更多背景信息。

这就是我所拥有的:

代码:https://codesandbox.io/s/determined-diffie-636ss?file=/src/App.js

【问题讨论】:

    标签: reactjs material-ui jss


    【解决方案1】:

    Material-ui 步进器组件无法适应我的需求,它正在成为一个障碍。所以我创建了自己的 Stepper 组件。

    我做了一个快速的研究,发现了这个Simple Stepper by Vicente Lyrio,并用该代码制作了我的自定义组件。这是我的结果:Stepper with progress bars by Jhonatan Zuluaga 您可以添加任意数量的步骤,它会起作用。这是组件:

     function CustomStepper(props) {
      const { steps, current, progress, classes } = props;
      
      function StepContent({ done, index }) {
        return done ? "✓" : index + 1;
      }
    
      const ProgressBar = ({ current, step, progress }) => {
        let value = 0;
        if(current+1 === step) {
          value = progress
        } else if(current >= step) {
          value = 100
        }
         
        return <LinearProgress variant="determinate" value={value} classes={{root: classes.linearProgress, bar: classes.bar}} />
      }
      
      function renderStep(label, key) {
        const { current, progress } = this;
        const done = key < current;
        const currentStep = key === current;
        const stepClasses = classNames({
          [classes.stepper__step__index]: true,
          [classes.currentStep]: currentStep,
          [classes.done]: done
        });
      
        return (
          <li className={classes.stepper__step} key={key}>
            <div className={classes.labelContainer}>
              <span className={stepClasses}>
                  <StepContent done={done} index={key} />
              </span>
              <p className={classes.stepper__step__label}>{label}</p>
            </div>
            {!!key && <ProgressBar current={current} step={key} progress={progress} />}
          </li>
        )
      }
    
      return (
        <ul className={classes.stepper}>
          {steps.map(renderStep, { current, progress })}
        </ul>
      )
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多