ReactJS: невозможно проанализировать массив 2d вне асинхронной функции - PullRequest
0 голосов
/ 27 июня 2019

Попытка setState массива в асинхронной функции и доступ к нему внутри асинхронной функции работает нормально. Но когда я пытаюсь получить доступ к нему вне асинхронной функции, он анализирует только через первый слой, что означает bookDetails [0], в то время как синтаксический анализ для bookDetails [0] [0] выдает ошибку как «невозможное чтение-свойство-0-из-неопределенного» «

getAll = async () => {
    const { contract } = this.state;
    const response = await contract.methods.getBooks().call();
    this.setState({ bookDetails: response});
    console.log("books: ",this.state.bookDetails[0][0]);

  };


//OUTPUT=> books:  nanme

//console.log outside the async function gives error

1 Ответ

0 голосов
/ 27 июня 2019

обратите внимание, что setState не синхронизируется сам по себе, вы должны проверить обновленное состояние в его обратном вызове:

getAll = async () => {
    const { contract } = this.state;
    const response = await contract.methods.getBooks().call();
    this.setState({ bookDetails: response}, () => console.log("books: ",this.state.bookDetails[0][0]);
);};

Кроме этого, фрагмента недостаточно, чтобы проверить, почему вы не можете использовать функцию асинхронной передачи в другом направлении.войти правильно.Пожалуйста, предоставьте более полный фрагмент.

...