reactjs - Material UI Stepper 使用状态和链接功能
问题描述
我一直在使用 Material UI 步进器作为我的 React 项目中不同页面之间的导航。页面应根据步进器上的当前 useState 更改,但是,它似乎默认返回主页。
function getSteps() {
return ['page1', 'page2', 'page3', 'page4'];
}
function getStepContent(step: number) {
switch (step) {
case 0:
return "/page1"
case 1:
return "/page2"
case 2:
return "/page3"
case 3:
return "/page4"
default:
return "/page1"
}
}
already linked to router
export default function HorizontalNonLinearStepper() {
const classes = useStyles();
const [activeStep, setActiveStep] = useState(0);
const [url, setUrl] = useState('')
const steps = getSteps();
const handleStep = (step: number) => () => {
setActiveStep(step);
const currentUrl = getStepContent(step)
setUrl(currentUrl)
console.log(step)
console.log(currentUrl)
};
return (
<div className={classes.root}>
{/*getStepContent(activeStep)*/}
<Stepper nonLinear activeStep={activeStep} className={classes.stepper}>
{steps.map((label, index) => (
<Step key={label}>
<StepButton onClick={handleStep(index)}>
<Link to = {url}>
<StepLabel
classes={{ label: classes.label, active: classes.labelActive}}
StepIconProps={{
classes: { root: classes.icon, text: classes.iconText, active: classes.iconActive},
}}>
{label}
</StepLabel>
</Link>
</StepButton>
</Step>
))}
</Stepper>
</div>
);
}
编辑部分解决方案 现在这会根据步进器使用状态(步骤)链接步进器组件上的不同页面。但是,现在有两个问题。
- 用户必须先单击步进器编号来更改使用状态,然后才能单击文本更改页面。
- 当新页面加载时,步进器使用状态默认回到下面常量中设置的useState
const [activeStep, setActiveStep] = useState(0);
解决方案
推荐阅读
- ios - 无法通过 recordName UUID 查询单个 CloudKit 记录
- python - 为什么 Xlim 和 Ylim 不能按预期工作
- regex - 为什么 grep 不匹配 "\<\-v\>"
- pipeline - 如何将本地目录挂载到大厅管道作业?
- bash - 如果 bash 命令接受文件名作为最后一个参数,是否可以使用管道提供文件内容?
- python - 多值赋值
- c# - 打开蓝牙设置页面并返回应用程序
- c# - 平面文件目标 预执行阶段失败。无法打开数据文件
- java - 我们可以使用带有破折号`-`或下划线`_`的spring-boot外部配置文件名吗?
- java - java.io.IOException:setDataSource 失败