Реагировать: добавить в массив объекта массива состояний

#javascript #arrays #reactjs #state

Вопрос:

Мое состояние выглядит примерно так:

 const [state, setState] = useState([
 { id: uuidv4(), myList: ["listItem1", "listItem2"] }
 { id: uuidv4(), myList: ["listItem1"] }
])
 

Как я могу добавить значение myList к определенному объекту, который я хочу добавить?

Комментарии:

1. Как вы будете идентифицировать конкретный объект?

Ответ №1:

Во — первых, поскольку вам нужно вычислить uuid для генерации идентификаторов, я бы использовал функцию для инициализации состояния :

 const [state, setState] = useState(() => [
 { id: uuidv4(), myList: ["listItem1", "listItem2"] }
 { id: uuidv4(), myList: ["listItem1"] }
])
 

Затем, чтобы добавить элемент в myList массив, я предлагаю вам добавить функцию, как показано ниже :

 function addItem(id, item) {
  const newState = state.map(el => 
      el.id === id ? {...el, myList: [...el.myList, item]} : el
  );
  setState(newState);
}