Проблема в том, что это асинхронный код.
У вас есть пара проблем:
Во-первых, (если я прав, предполагая, что это 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).
Я не буду вдаваться в подробности, но это должно направить вас в правильном направлении.