Помощник неизменности возвращает неопределенный при обновлении вложенного объекта в массиве - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующий массив:

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

...