【问题标题】:How to disable individual button in a list?如何禁用列表中的单个按钮?
【发布时间】:2019-02-15 19:07:42
【问题描述】:

我有一个项目列表(动态创建),每个项目都有各自的删除按钮。我试图在点击时禁用单个按钮。我可以使用 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>

【问题讨论】:

  • 您好,您可以显示一些代码,否则将很难提供帮助...
  • 这很模糊,但您可以尝试类似 disabled={condition ?真:假}
  • @RicardoCosta,甚至disabled={condition}
  • @t3__rry,感谢您的回复。我编辑了我的问题。

标签: reactjs material-ui


【解决方案1】:

你可以使用这样的东西, 例如:

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}

【讨论】:

  • 此方法适用于固定数量的按钮。但是,如果我有一个动态创建的按钮列表,我将需要有许多状态变量来跟踪其中的每一个。无论如何,谢谢。
猜你喜欢
  • 2022-01-24
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多