reactjs - Material UI - 步进步骤内的按钮
问题描述
我想在 Material UI 的步进器的一个步骤中有一个可点击的元素。该元素应始终可见,而不仅仅是在步骤处于活动状态时可见。由于 UX 原因,无法将所有步骤设置为活动状态。
这是我尝试过的:
<Step key={x.id}>
<StepButton completed={false} onClick={() => xxx()}>
{title}
</StepButton>
<div style={{ display: "flex", justifyContent: "center" }}>
<IconButton onClick={(e) => show()}>
<InfoIcon />
</IconButton>
</div>
</Step>
但似乎不允许在步骤中包含 div。我在 div 的行中遇到错误(例如警告:收到true
非布尔属性激活。)
然后我尝试将图标放在 StepButton 标记中:
<Step key={x.id}>
<StepButton completed={false} onClick={() => xxx()}>
{title}
<IconButton onClick={(e) => show()}>
<InfoIcon />
</IconButton>
</StepButton>
</Step>
但这也是不可能的,因为 Buttons 中的 Buttons 是不允许的。
有没有其他方法可以在一个步骤中使用可点击元素(如 IconButton)?
解决方案
您可以在 StepLabel 中放置一个按钮:
import { Step, StepLabel, StepContent, Button } from "@material-ui/core";
像这样放置:
<Step key={x.id}>
<StepLabel
onClick={() => handleStep(x.id)}
completed={completed}
>
{title}
<Button
onClick={(e)=>{
console.log("Button Pressed")}
}
>
{"Button"}
</Button>
</StepLabel>
<StepContent>
{"Content hidden when not active"}
</StepContent>
</Step>
如果要阻止按钮打开步骤,可以添加一个e.stopPropagation()
推荐阅读
- python - Python跳过函数中的参数
- c# - 碰撞后触发定时器
- java - Gradle“实现”依赖项未使用正确的代码编译
- c# - 从 C# 中的多级集合中删除项目
- angular - 在 *ngFor 中使用 ng-class 有条件地格式化 Angular 11 中的表格单元格
- arrays - 如何在 mongoimport 中指定多个嵌套文档?
- c# - 带有 if 块 C# 的自定义系统属性
- javascript - 在 ExtJS 中使 EasyGridCombo 成为必需
- sql - 从 BQ 中刚刚过期的视图中查询
- spring-boot - JPA 不能在不删除双方的情况下删除 ManyToMany