2017-09-13 82 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

相關問題