如何使用复选框在反应本机中使用listview选择多个项目?
问题描述:
我正在使用复选框的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);
}
答
你忘了在状态写之前的值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,
}));
对不起,但我得到selectedItems未定义和setState不是一个函数。 – kkumber
显示所有组件代码。它不可能是。 – temakozyrev
checked = {rowData.id === this.state.checkedBoxCheck}它是什么?你有状态数组,你不能通过这种方式进行比较。 – temakozyrev