当前位置: 首页 > 知识库问答 >
问题:

取消选中时删除项目复选框

锺霍英
2023-03-14

我有一个复选框,其中有一对项目,当我单击该复选框时,该项目将添加到名为currentDevice的状态,但当我取消选中该项目时,它将保留“添加项目”,而不是删除它。

当我取消选中该框时,如何从状态中删除项。Im使用“反应本机元素”复选框。谢谢你

代码:

constructor(props) {
super(props)
this.state = {
currentDevice: [],
checked: []
 }
}

handleChange = (index, item) => {
    let checked = [...this.state.checked];
    checked[index] = !checked[index];
    this.setState({ checked });

    this.setState({currentDevice: [...this.state.currentDevice, item.bcakId]})
  }

renderFlatListDevices = (item, index) => {
    return (
      <ScrollView>
      <CheckBox
        title={item.label || item.bcakId}
        checked={this.state.checked[index]}
        onPress={() => {this.handleChange(index, item)}}
        checkedIcon='dot-circle-o'
        uncheckedIcon='circle-o'
        checkedColor='#FFE03A'
        containerStyle={styles.containerCheckBox}
        textStyle={styles.textCheckBox}
      />
    </ScrollView>
    )
  }

共有2个答案

常波鸿
2023-03-14

我找到了解决方案,这里是代码:

handleChange = (index, item) => {
    let checked = [...this.state.checked];
    checked[index] = !checked[index];
    this.setState({ checked });
    this.setState(previous => {
      let currentDevice = previous.currentDevice;
      let index = currentDevice.indexOf(item.bcakId)
      if (index === -1) {
        currentDevice.push(item.bcakId)
      } else {
        currentDevice.splice(index, 1)
      }
      return { currentDevice }
    }, () => console.log(this.state.currentDevice));
  }

信用:向数组中添加选中的复选框并删除未选中的复选框-react native

寇景明
2023-03-14

将handleChange方法更改为

const handleChange = (index, item) => {
  const {currentDevice, checked} = state;
  const found = currentDevice.some((data) => data === item.bcakId);
  if (found) {
    currentDevice.splice(
      currentDevice.findIndex((data) => data === item.bcakId),
      1
    );
  } else {
    currentDevice.push(item.bcakId);
  }
  checked[index] = !checked[index];
  this.setState({
    currentDevice,
    checked,
  })
};
 类似资料:
  • 问题内容: 如何从选择框中删除项目或向其中添加项目?我正在运行jQuery,这应该使任务更轻松。下面是一个示例选择框。 问题答案: 删除一个选项: 添加一个选项:

  • 问题内容: 谁能告诉我从我删除所选项目的简便方法? 我在Google和此处进行了搜索,但发现了很多方法。我应该使用哪种方式? 问题答案: 正如@Andreas_D所说,以数据为中心,更抽象的ListModel是解决方案。这可以是DefaultListModel。您应该在JList中显式设置模型。所以(感谢@kleopatra发表评论): DefaultListModel中有几种方法。 顺便说一句,

  • 我有一个Windows Phone应用程序,其中一个ListPicker绑定到一个ObservableCollection和一个选定的项目: 在ViewModel中: 当我试图从按钮处理程序的列表中删除所选项目时,我得到一个InvalidOperationException(SelectedItem必须始终设置为有效值): 我希望将SseltedCon条件设置为null(这实际上是列表中的第一个项

  • 我正在尝试一个Woocommerce票证插件。默认情况下,该插件会显示一个表,其中包含多个票证变体作为产品,并在下面显示一个文本字段作为其数量和一个提交按钮,以将产品添加到购物车中。 我想用单选按钮或复选框替换这个文本字段,这样用户就可以选择一种类型的票证,然后点击提交按钮将其中的一部分添加到购物车中。 我的想法是在foreach循环中创建一个复选框或单选按钮,该复选框或单选按钮的值为quanti

  • 我有一个片段,其中有一个旋转器和复选框。 布局文件need_help_fragment_layout.xml: 代码片段: 颜色代码: 如果未选择任何内容,则可以: 从微调器中选择项目时,复选框将消失: 布局文件中没有其他内容。只有约束布局以及复选框和微调器的指南。微调器和复选框在片段的onCreateView中初始化。当我从微调器中选择任何项目时,复选框将消失。请帮助。

  • 下载整个项目。zip在这里 此问题的代码在Views文件夹中的CreateSchedule.aspx文件中。 以下是GridView的ASP.NET: 在取消选中某个框后调试事件时,网页上的复选框显示为未选中,但的值为true,即使该复选框在网页上显示为未选中。(chkRow是未选中的复选框) 更新3 我取得了一些突破。我发现复选框的问题在于嵌套的gridview位于使用JavaScript折叠和