Вместо того, чтобы делать это в одной функции, вы можете реализовать карту в методе render () вашего компонента:
render() {
return(
<div>
{!!imgSrc ? (
<PlaceholderComponents/>
) : this.state.imgSrc.map(item => (
<div key={item.fileResult} className='uploadResultList'>
<embed src={item.fileResult} />
</div>
}
</div>
)
}
Однако вам нужно будет "загрузить" данные файла перед тем, как сделать это.либо с помощью componentDidMount или componentWillMount (который сейчас устарел, поэтому старайтесь избегать его использования).Например:
componentDidMount() {
getImageSrcData(); // Either a function
this.setState({ imgSrc: imgFile }) // Or from setState
}
Если вам нужна дополнительная информация о состоянии установки из componentDidMount, см. Эту ветку: Состояние установки для componentDidMount ()
РЕДАКТИРОВАТЬ:Вы можете использовать React Suspense API, чтобы обеспечить загрузку файла перед рендерингом ...
// You PDF Component from a separate file where the mapping is done:
render() {
return (
<div>
{this.state.imgSrc.map(item => (
<div key={item.fileResult} className='uploadResultList'>
<embed src={item.fileResult} />
</div>}
</div>
)
}
const PleaseWaitComponent = React.lazy(() => import('./PleaseWaitComponent'));
render() {
return (
// Displays <PleaseWaitComponent> until PDFComponent loads
<React.Suspense fallback={<PleaseWaitComponent />}>
<div>
<PDFComponent />
</div>
</React.Suspense>
);
}