Я знаю, что заголовок недостаточно ясен, но я постараюсь объяснить здесь больше. У меня есть плоский список, в котором я должен выбрать несколько элементов и создать строковое значение, содержащее идентификатор элемента и цену элемента, которые я должен отправить на сервер. это мой подход: (он работает нормально)
selectItem = data => {
let test = 130;
if (data.Unites < test) {
data.Etat = 0
console.warn('points insufisants');
} else {
data.isSelect = !data.isSelect;
data.selectedClass = data.isSelect ? StylesGift.validChek : StylesGift.inValidChek;
const newItem = {
idCadeau: data.idCadeau,
Unites: data.Unites,
};
if (data.isSelect) {
const index = this.state.paramsSend.indexOf([newItem]);
this.setState({
paramsSend: this.state.paramsSend.concat([newItem]),
}, () => {
let str = this.state.paramsSend.map(v => Object.values(v).join('_')).join(',')
this.setState({
params: str,
});
});
}else if (data.isSelect === false) {
const index = this.state.paramsSend.indexOf([newItem]);
if (index > -1) {
array.splice(index, 1);
let str = this.state.paramsSend.map(v => Object.values(v).join('_')).join(',')
this.setState({
params: str,
});
}
console.log('looog' + this.state.paramsSend);
}
}
this.setState({changed: !this.state.changer})
};
Моя проблема в том, что когда я отменяю выбор элемента, я не могу удалить идентификатор и цену элемента с помощью этого кода:
else if (data.isSelect === false) {
const index = this.state.paramsSend.indexOf([newItem]); <-- =-1
if (index > -1) {
this.state.paramsSend.splice(index, 1);
let str=this.state.paramsSend.map(v=>Object.values(v).join('_')).join(',')
this.setState({
params: str,
});
}
console.log('looog' + this.state.paramsSend);
}
любое предложение, пожалуйста? indexOf return -1 Я не знаю, почему
const index = this.state.paramsSend.indexOf([newItem]);
console.warn('index ' + index);
console.warn('from this ' +JSON.stringify(this.state.paramsSend));
console.warn('remove this ' + JSON.stringify(newItem));
newItem уже находится в paramsSend, но возвращает -1! введите описание изображения здесь