reactjs - 如何禁用列表中的单个按钮?
问题描述
我有一个项目列表(动态创建),每个项目都有各自的删除按钮。我试图在点击时禁用单个按钮。我可以使用 disabled prop 和 setState 来禁用单个按钮。但是,这可能不适合我当前动态创建列表项的用例。如果使用 setState 方法,我可能需要为创建的每个项目创建额外的状态。
谢谢你的建议。
编辑:我想生成一个包含 N 个项目的列表,每个项目都有一个删除操作按钮。并且,每个删除按钮都应该在第一次单击处理后禁用(以防止双击)。
如前所述,在按钮上使用 'disabled={condition}' 可能不是一个好主意。这是因为列表是动态创建的,其中包含 N 个项目。如果使用方法('disabled={condition}'),我需要有 N 个状态变量来跟踪每个删除按钮。
<List>
{ items.map( item =>
<ListItem>
<ListItemText
primary="Single-line item"
secondary={secondary ? 'Secondary text' : null}
/>
<ListItemSecondaryAction>
<IconButton aria-label="Delete">
<DeleteIcon />
</IconButton>
</ListItemSecondaryAction>
</ListItem>
)
}
</List>
解决方案
你可以使用这样的东西,例如:
let button_variables = [
{
label:"save_btn",
isDisabled : false
},
{
label:"cancel_btn",
isDisabled : true
}
]
and then u can map those to the buttons something like below ,
button_variables.map(function (data, index) {
<button disabled={data.isDisabled}> {data.label} </button>
});
Note : If disabled didnt worked means, u can change className dynamically instead of that .
Ex :
className = {data.isDisabled ? activeClass : disabledClass}
推荐阅读
- python - 如何使用 event.type?
- python - For循环中的函数未返回正确的值
- r - 使用 lubridate 转换日期字符串,但不调整夏令时
- javascript - 更改纸张颜色 Material-UI
- javascript - 如何在 passport.js 中访问 req.user 数据成员
- excel - 如何选择所有值的范围,直到第 3 行下的末尾?
- c++ - C++ 创建一个长度为变量的数组会生成随机大小的数组
- raft - RAFT 上是否丢弃了消息?
- java - 二十一点游戏 - 如何使用 getter 和 toString() 方法
- reactjs - useReducer 派发后如何获取状态?