Как мне добавить состояние к массиву

#reactjs

#reactjs

Вопрос:

Я пытаюсь добавить переменную состояния props.addremoveDatabase (из другого компонента, следовательно, почему используется props) в конец массива newState. Однако это не работает, и я не уверен, почему, поскольку я пытался использовать для этого метод push.

Ошибка:

введите описание изображения здесь

 const [addRemoveDatabase, setAddRemoveDatabase] = useState([
  'iadcaprod.auiag.corp/iadpprod',
]);
const [productionDatabaseData, setProductionDatabaseData] = useState([]);
const addToProduction = ({target}, {id, databases}) => {
  setProductionDatabaseData((previousState) => {
    let newState = [...previousState];
    if (target.checked) {
      newState = [
        ...newState,
        {unit_test_id: id, databases: databases.push(props.addRemoveDatabase)},
      ];
    } else {
      const i = newState.findIndex(({unit_test_id}) => unit_test_id === id);
      if (i !== -1) newState.splice(i, 1);
    }

    return newState;
  });
};

  

Ошибка:
введите описание изображения здесь

Ответ №1:

Хммм, вы используете объекты. Правильно?

 databases.push(props.addRemoveDatabase)
newState = [
  ...newState,
  {unit_test_id: id, databases: [...databases]},
];
  

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

1. Да, это правильно, однако, похоже, работает. Он возвращает длину только тогда, когда я попробовал этот код? Я только что обновил свой ответ, чтобы вы могли видеть

2. все еще неправильные databases.push(props.addRemoveDatabase)

3. В моем ответе я меняю его на databases: databases.push(props.addRemoveDatabase)

4. Да, я изменил его, но он возвращает длину обратно, а не имя массива

5. Обновил мой ответ