@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) происходит в основном после того как всё загрузилось, и естественно прелоадер так и не исчезнет.
Что можно сделать?

Думаю почему так происходить не нужно объяснять(медиа кешируется)
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
Aetae
@Aetae
Тлен
Ждать load только если document.readyState не 'complete'.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы