react-native-multiple-select存储提交时选择的项目

时间:2018-07-12 18:45:50

标签: arrays react-native multi-select

我正在使用react-native-multiple-select并尝试创建一个下拉菜单,该菜单允许用户选择多个选项,然后将他们选择的选项记录到数组中。 目前,我的代码是:

    onSelectedItemsChange = selectedItems => {
    this.setState({ selectedItems });
    console.log('submit button was pressed')
  };

  render() {
    const { selectedItems } = this.state;
    return (
      <View style={{ flex: 1 }}>
        <MultiSelect
          hideTags
          items={items}
          uniqueKey="id"
          ref={(component) => { this.multiSelect = component }}
          onSelectedItemsChange={this.onSelectedItemsChange}
          selectedItems={selectedItems}
          selectText="Pick Items"
          searchInputPlaceholderText="Search Items..."
          onChangeInput={ (text)=> console.log(text)}
          altFontFamily="ProximaNova-Light"
          tagRemoveIconColor="#CCC"
          tagBorderColor="#CCC"
          tagTextColor="#CCC"
          selectedItemTextColor="#CCC"
          selectedItemIconColor="#CCC"
          itemTextColor="#000"
          displayKey="name"
          searchInputStyle={{ color: '#CCC' }}
          submitButtonColor="#CCC"
          submitButtonText="Submit"
        />
        <View>

问题出在提交按钮上。我只想记录用户按下“提交”后选择的项目。

此刻,它记录每次选择一个新项目时都按下了按钮,这不利于将所选项目存储到另一个数组中。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作以获取包含所选项目对象的数组:

for(var i = 0; i < selectedItems.length; i++){
this.state.selectedItemsArray.push(this.state.gasOptions[selectedItems[i]])
}
console.log(selectedItems);

这应该输出选择的项目数组,每个项目都包含唯一键和显示名称。

答案 1 :(得分:0)

this.state.selectedItemsArray.push(listOfObject[0].id);

我注意到selectedItemsArray仅存储键,因此它是键数组而不是对象列表。因此,如果键是id,则希望将其推入数组,而不是所有对象。