Топор ios значение обещания всегда отображается неопределенным - PullRequest
1 голос
/ 19 февраля 2020

Внутри функции componentDiMount дочернего компонента я использую внешнюю функцию (getResults) для заполнения значения состояния. Эта getResults функция вызывает внешний API с помощью ax ios.

Вот мой код:

  componentDidMount() {
    const cluster = '...';
    const index= '...'; 
    const field= '...';     
    const paragraphs = uuids.map(uuid => {
      // Get the results.
      getResults(cluster, index, field, uuid, 'source')
        .then(results => {
        // Get value with console.log OK.
        console.log(results);
        // Return a undefined value... 
        return results;
      })
      .catch(error => {
        console.error(error);
      });
    });

Прочитав много, много постов, я вижу, что моя проблема, кажется, топор ios задержка для генерации результатов. Чтобы решить мою проблему, я безуспешно проверил много решений: проверьте отображаемое значение в разделе рендеринга ...

Как я могу решить эту проблему? Изменить ли элемент в функции componentDiMount или непосредственно во внешней функции getResults?

Спасибо за помощь.

1 Ответ

1 голос
/ 19 февраля 2020

Обычно в запросе топора ios данные поступают в results.data

Кроме того, поскольку вы ничего не возвращаете внутри .map, это будет просто массив undefined .

Вам нужно вернуться внутрь .map

componentDidMount() {
    const cluster = '...';
    const index= '...'; 
    const field= '...';     
    const paragraphs = uuids.map(uuid => {
      // Get the results.
      // ADDED RETURN INSIDE .map
      return getResults(cluster, index, field, uuid, 'source')
        .then(results => {
        // Get value with console.log OK.
        console.log(results);
        // Return a undefined value... 
        return results;
      })
      .catch(error => {
        console.error(error);
      });
  });

А если вы хотите получить данные из paragraphs, вам нужно использовать Promise.all или async / await чтобы он работал.

...