Попытка обновить массив в объекте внутри объекта. Реагируйте, useState - PullRequest
1 голос
/ 09 июля 2020

У меня есть метод onChange, который выглядит так:

const onChangeEnableWhenValueCalculation = i => (event) =>{
      setItem({
        ...newItem,
        enableWhen: [
          {
           linkId: newItem.enableWhen[i]?.linkId,
           operator: newItem.enableWhen[i]?.operator,
           valueCalculation: event.target.value,
          }
        ],
      });
  }

Я хочу изменить valueCalculation на event.target.value, но по указанному индексу внутри enableWhen.

Как установить значение этого ключа в определенном c индексе внутри объекта, внутри и в массиве внутри другого объекта? Любая помощь приветствуется.

1 Ответ

2 голосов
/ 09 июля 2020

Если я правильно понимаю, я бы сделал:

let enableWhen = [...newItem.enableWhen];
// replace the element at index i with the updated item
enableWhen.splice(i, 1, {
       linkId: newItem.enableWhen[i]?.linkId,
       operator: newItem.enableWhen[i]?.operator,
       valueCalculation: event.target.value,
});

setItem({
    ...newItem,
    enableWhen
});
...