2017-09-13 86 views
0

我正在使用复选框的listview。我试图选择多个项目,但我发现结果中的东西,我每次点击的结果被替换,我检查如何使用复选框在反应本机中使用listview选择多个项目?

这里的第一个项目的复选框是我的情况:

this.state = { 
    ... 
    checkedBoxCheck: false, 
    selectedItems:[], 
    }; 

    renderRow(rowData) { 
     return (
      ... 
      <CheckBox style={styles.checkboxed} 
       checked={rowData.id === this.state.checkedBoxCheck} 
       onPress={() => this.onItemSelect(rowData)} 
      /> 
     ); 

onItemSelect(row){ 
    this.setState({ 
     selectedItems: [{row}], 
     checkedBoxCheck: true, 
    }); 
    let myitem = this.state.selectedItems.concat({row}); 
    console.log(myitem); 
} 

回答

1

你忘了在状态写之前的值selectedItems:

this.setState((prevState) => ({ 
    selectedItems: [...prevState.selectedItems, row], 
    checkedBoxCheck: true, 
})); 

和删除值(与lodash):

this.setState((prevState) => ({ 
    selectedItems: _.without(prevState.selectedItems, row), 
    checkedBoxCheck: !!_.without(prevState.selectedItems, row).length, 
})); 
+0

对不起,但我得到selectedItems未定义和setState不是一个函数。 – kkumber

+0

显示所有组件代码。它不可能是。 – temakozyrev

+0

checked = {rowData.id === this.state.checkedBoxCheck}它是什么?你有状态数组,你不能通过这种方式进行比较。 – temakozyrev

相关问题