У меня есть таблица, например, 10 строк, в каждой строке есть выборка.
Как я могу сохранить все выбранные элементы из всех 10 строк в массиве в таком состоянии, чтобы они были похожи на [{id, value}, {id, value}]
? ?
и хотите убедиться, что когда я изменяю выбранное значение из одного из параметров, он меняет предыдущее значение в массиве.
моя текущая функция
onSelectGrade(e) {
const { selectedGrades } = this.state
let index
if (e.target.value) {
let gradeItem = { cid: +e.target.id, id: +e.target.value }
selectedGrades.push(gradeItem)
} else {
index = selectedGrades.indexOf(+e.target.id)
selectedGrades.splice(index, 1)
}
this.setState({ selectedGrades: selectedGrades })
}
а вот компонент select это строка таблицы
<select
defaultValue="Default"
id={customer.id.toString()}
onChange={this.onSelectGrade}
className="browser-default custom-select"
>
<option disabled value="Default">Choose grade</option>
{customer.categoryList &&
customer.categoryList.map(cat =>
<option
key={cat.id}
value={cat.id.toString()}>
{cat.name}
</option>
)}
</select>
, но он не работает так, как мне нужно ... он хранит массив следующим образом [{"cid": 11, "id": 2 }, {"cid": 11, "id": 3}] но мне нужно вот так [{11, 2}, {11, 3}]
и когда я изменяю опцию, добавленную перед ней добавляет его еще раз
и задерживает клики на 1, это означает, что первый выбор возвращает пустой массив> затем второй возвращаемый массив содержит первый выбор ... и так далее
Пожалуйста, помогите если можешь, спасибо