Как обновить вложенный массив (multi реагировать на выбор) - PullRequest
0 голосов
/ 08 ноября 2018

Я создаю приложение, в котором мне нужно хранить выбранные значения в массиве, вложенном в объект (категория ниже).Состояние выглядит следующим образом:

state = {
    data: {
        user: "",
        title: "",
        text: "",
        category: [], // should store values
    },
    updateNoteId: null,
}

В моем рендере () у меня есть следующая форма:

<form onSubmit={this.submitNote}>
    <Select
        name="category"
        value={this.state.data.category}
        options={options}
        onChange={this.handleMultiChange}
        multi
    />
    <input type="submit" value="Save" />
</form>

Варианты:

const options = [
    { value: 1, label: 'one' },
    { value: 2, label: 'two' },
    { value: 3, label: 'three' }
]

Итак, вопрос в том, как this.handleMultiChange функция должна выглядеть так, как будто она работает.Категория [] должна сохранять все значения, выбранные в «Выбор», который является компонентом реагирования-выбора (например, это должна быть категория = [1,3], когда были выбраны «один» и «три»).Я пробовал много комбинаций, но ни один из них не работал до сих пор.Я предпочитаю использовать ES6 без каких-либо внешних библиотек / помощников для этого.

1 Ответ

0 голосов
/ 08 ноября 2018
handleMultiChange(selectedOptions) {
  this.setState({ 
    data: {
      ...this.state.data, 
      categories: selectedOptions
    }
  })
}
...