Задать вопрос
@ravshan01

Можно ли как-то узнать загрузились ли медиа файлы страницы без использования обработчика событий load?

Всем привет.
Такое дело, что я показываю preloader(который создаётся реактом), до тех пор пока не загрузятся медиа файлы и не придут ответы с запросов

function App(props){
  const [requestLoading, setRequestLoading] = useState(true);
  const [mediaLoading, setMediaLoading] = useState(true);
  
  useEffect( () => {
    async function setDependences(){
      / some code
    }
    async function setObjects(){
      / some code
    }
    async function checkUser(){
      / some code
    }


    window.addEventListener('load', () => setMediaLoading(false) );
    Promise.all([ setDependences(), setObjects(), checkUser() ])
    .then( () => setRequestLoading(false) );
   
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

  return (
    <Fragment>

      <Preloader loading={ requestLoading || mediaLoading } />
      <Header />
      
      { requestLoading === false ? <Pages /> : false }

    </Fragment>
  );


Pages показываю только после ответа от запросов и добавления данных в хранилище.
Проблема вот в чём:
добавления обработчика событий (load на window) происходит в основном после того как всё загрузилось, и естественно прелоадер так и не исчезнет.
Что можно сделать?

Думаю почему так происходить не нужно объяснять(медиа кешируется)
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • Академия Eduson
    React-разработчик
    2 месяца
    Далее
Решения вопроса 1
Aetae
@Aetae
Тлен
Ждать load только если document.readyState не 'complete'.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽