React / Ax ios: невозможно установить состояние двух объектов одновременно - PullRequest
0 голосов
/ 06 августа 2020

Вся моя функция находится здесь ниже:

  initializeData = () => {
    const promise1 = axios.get(
      "/workflow/boards/" + this.state.boardId + ".json"
    );
    const promise2 = axios.get("/workflow/boardIds.json");
    Promise.all([promise1, promise2])
      .then((response) => {
        console.log(response);

        // this.setState(response[0].data); //This works fine
        // this.setState({ boardIds: response[1].data }); //This works fine
        this.setState(response[0].data, {boardIds: response[1].data}); //This throws error
      })
      .catch((error) => {
        console.log("error returned on getColumns: " + error);
      });
  };

Я могу установить состояние каждого обещания индивидуально, но когда я пытаюсь выполнить последний setState, я получаю эту ошибку:

Ошибка: в качестве обратного вызова передан недопустимый аргумент. Ожидается функция. Вместо этого получил: [object Object]

Кажется, что я смогу выполнить sh это, не имея дважды установленного состояния, но не уверен, что делаю неправильно.

1 Ответ

1 голос
/ 06 августа 2020

Подпись setState - (updater, [callback]) - второй параметр - это функция, которая запускается после обновления состояния. В настоящее время вы передаете два объекта, поэтому ошибка второго параметра.

Объедините оба обновления в один объект:

this.setState({...response[0].data, boardIds: response[1].data});
...