У меня есть следующий массив:
usage: [
{date: '2018-09-21', appliedNight: false, appliedDay: false, time: 'day'},
{date: '2018-09-20', appliedNight: true, appliedDay: false, time: 'day'}
]
onPress кнопки, я пытаюсь преобразовать объект внутри массива:
transformEntry = (item, index, time) => {
this.setState(update(this.state, {
products: {
[index]: {
usage: {
$apply: (items) => {
if (items.length > 0) {
items.map((usage) => {
if (usage.date === this.state.currentDate) {
return {
...usage,
date : this.state.currentDate,
appliedNight: time === 'night',
appliedDay : time === 'day',
time : time
};
} else return items;
});
}
else { // if no items found
let newUsage = {
usage: {
date : this.state.currentDate,
appliedNight: time === 'night',
appliedDay : time === 'day',
time : time
}
};
return Object.values(newUsage);
}
}
}
}
}
}
));
};
Часть newUsage
работает как положено,он создает объект, если массив пуст.Проблема в первой части, когда массив не пустой, он всегда устанавливает массив как неопределенный.
Я также пытался обновить использование, возвращаемое с map
, но опять же, undefined:
if (usage.date === this.state.currentDate) {
return update(usage, {
$set: {
date : this.state.currentDate,
appliedNight: time === 'night',
appliedDay : time === 'day',
time : time
}
});
}
Я использую immutability-helper@2.8.1
.
минимальная игровая площадка: codesandbox