Хорошо, позвольте мне представить всю информацию из комментариев как полный ответ.
Примечание: Вопрос на самом деле не специфический для React, а ванильный JS.
Идея состоит в том, чтобы динамически создать экземпляр Image
:
/* Somewhere inside the React class, I think */
preloadImages = () => {
let links = ["link1", "link2", "link3"]
/* the one react-specific thing is this.setState */
this.setState({ images: links.map((link, i) => {
// create an Image instance
var img = new Image()
// setting handler for load complete
img.onload = () => this.handleImageLoad(i)
// set the src attribute for it. After this line image loading will start
img.src = link
// return object with indicate of image loading statement
return {
url: link,
loaded: false
}
}) })
}
// nuff said, I suppose, this function is clear :)
handleImageLoad = index => {
var { images } = this.state
images[i].loaded = true
this.setState({ images })
}
Очевидно, теперь вы можете использовать this.state.images
для рендеринга и рендеринга только изображений, которые уже загружены:)