= React.lazy(() => {
return new Promise(resolve => {
const img = new Image();
img.src= main;
}).then(() => {
import ('./pages/main/main')
})
})
resolve забыл вызвать
И сделать return динамического импорта тоже забыл
Чтобы сделать что-то ДО import()
хм не ясно , а так что мешает не догоню? const SomeComponent = React.lazy( async () => { /// do some const img = new Image(); img.src = main; img.onload = resolve import('./SomeComponent')).then('./pages/main/main') } все равно первое выполнится то что вверху , а в then после
Ты точно так же сделал новый промис декларацией async
Только неправильно
Что такое «resolve» у тебя?
да то с await , не суть важно сетереть await просто зачем вехний промис?
const loadImage = (src) => new Promise((resolve) => { const img = new Image() img.src = src img.onload = resolve }) const loadComponentWithImages = async () => { const images = [ back, name_inp, password_inp, wallet_inp ].map(loadImage) const componentPromise = import('./pages/main/main') const allPromises = [componentPromise] .concat(images) const [component] = await Promise.all(allPromises) return component } const Main = React.lazy(loadComponentWithImages)
Вот так побыстрее будет работать. Потому что параллельно. Интересно, что на это скажет Drew
А если одна из картинок не сгрузится всё в main мы не увидим? так никто не делает что бы из-за одной картинки целую прилагу глушили. Обычно на onload спиннера крутят и не морочат головы. Вопрос в другом часто ли пользовался таким подходом как выше?
Обработка ошибок обязательно должна быть, но не в демонстрации идеи (которую написал я), а в реализации (которую напишет топикстартер). И там будут onerror = reject, allSettled вместо all и вообще полный фарш
Последний вопрос хороший, но не ко мне
спасибо огромное, это мне тоже помогло. но при уходе со страницы и, вернувшись назад suspsense не срабатывает(это понятно почему) и изображения грузятся как бы при "пользователи". можно ли сделать, чтобы эти изображения сохранялись как то?
Обсуждают сегодня