【发布时间】:2019-11-04 19:04:42
【问题描述】:
我有一个 Stepper 组件,它接收一个名为 step 的道具
export default function HorizontalLinearStepper({ step }) {
const classes = useStyles()
const [activeStep, setActiveStep] = React.useState(0)
const steps = getSteps()
return (
<div className={classes.root}>
<Stepper
activeStep={step}
connector={<ColorlibConnector />}
alternativeLabel
>
{steps.map(label => (
<Step key={label}>
<StepLabel
StepIconProps={{
classes: { root: classes.stepIcon },
}}
>
{label}
</StepLabel>
</Step>
))}
</Stepper>
</div>
)
}
我需要根据我的 step 属性设置属性 activeStep,如下所示:
if (step === 0) {
setActiveStep(0)
} else if (step === 1) {
setActiveStep(0)
} else if (step === 2) {
setActiveStep(2)
} else if (step === 3) {
setActiveStep(3)
} else if (step === 4) {
setActiveStep(4)
} else if (step === 5) {
setActiveStep(4)
}
上面的代码抛出一个错误: “重新渲染过多。React 限制渲染次数以防止无限循环。”
最好的方法是什么?
【问题讨论】:
-
...
setActiveStep(step-1)..? -
我不能这样。给出错误“重新渲染过多。React 限制渲染次数以防止无限循环。”
标签: javascript reactjs