Как правильно ждать выборки в классе реакции - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть класс, в котором я должен проверить наличие элемента, отображаемого в одной HTML-форме (например, гиперссылка) или обычном тексте.

Я получаю объект как опору. Мне трудно использовать fetch, чтобы правильно распознать, существует ли элемент на основе кода возврата

    this.props.item.map(function(item) {
          fetch(url+item)(). then (
              if(statusCode === 200)
                 //display hyperlink
                 return <a href=url+item>{item.a:item.b}</a>
              else
                 //normal text
                 return <disp>{item.a:item.b}</disp>
          )
         // But its expecting a return here!
         //return <disp>{item.a:item.b}</disp>
    })

1 Ответ

1 голос
/ 24 апреля 2019

Проблема в том, что это асинхронный код.

У вас есть пара проблем:

Во-первых, (если я прав, предполагая, что это Array.prototype.map функция), функция .map должна что-то возвращать. Функция map преобразует один массив в другой массив того же размера.

Во-вторых, и, что более важно, fetch возвращает Promise.

Так что даже если вы изменили свой код на:

this.props.item.map(function(item) {
     return fetch(url+item)(). then (
          if(statusCode === 200)
             //display hyperlink
             return <a href=url+item>{item.a:item.b}</a>
          else
             //normal text
             return <disp>{item.a:item.b}</disp>
      )         
})

Все, что вы получите, это массив обещаний.

То, что я рекомендую вам сделать, это начать использовать реаги-редукс , и лично я рекомендую использовать redux-saga .

Базовая концепция с редуксом и другими решениями по управлению состоянием состоит в том, что ваши компоненты React отвечают за отображение данных и , реагирующих на взаимодействие с пользователем (обычно путем отправки действия с избыточностью) , Они не должны нести ответственность за фактическое получение или манипулирование данными. Вот для чего предназначено ваше промежуточное ПО для управления состоянием (например, redux-saga).

Я не буду вдаваться в подробности, но это должно направить вас в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...