Dlaczego wczytanie danych opóźnia schowanie się modala?

Dlaczego wczytanie danych opóźnia schowanie się modala?

Wątek przeniesiony 2023-08-07 21:06 z JavaScript przez Riddle.

PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 374
0

Problem jest taki(albo bardziej ciekawość), że ogólnie modal ładuje się około 2 sec(w tym czasie nic się nie wyświetla) i pokazuje modal z loaderem, potem jak pobierze potrzebną informacje z requesta getSomeDataFromBackend() to usuwa loader ale to już nie ważne. Chodzi mi o te 2sec aż do pokażania loadera. Dlaczego jeśli usunę getSomeDataFromBackend() modal ładuje się połowę szybciej. Przecież content powinien pojawić się szybko i request nie powinien mieć nic do rzeczy. Tak samo jak dam breakpoint na miejscu pokazanym w kodzie też ładuje się szybiej. Nie mam pojęcia czym to jest spowodowane? przecież useEffect() nie powinien wpływać na to że content się pokazuje.

Mam podobny kod jak tutaj tylko bardziej skomplikowany
Modal jest obsługiwany ze stora

Kopiuj
import React, { useState, useEffect } from 'react';

const ModalComponentContent = () => {
  useEffect(() => {
    getSomeDataFromBackend(); // jesli zrobie breakpoint w debugerze tutaj to kod pokaże modal 2x szybciej 
  }, []);

  return (
    <div>
      {isLoading ? <Spinner /> : (
        <div>
            <h1>Przykładowy komponent z użyciem useEffect i modala</h1>
            {someMaping.map()}
        </div>
      )
    </div>
  );
};

const mapStateToProps = (store) => {
  return {
    isOpen: store.modal.isOpen,
    // tutaj kilka innych rzeczy ze stora
  };
};

const mapDispatchToProps = (dispatch) => {
  return {
    closeModal: () => dispatch(closeModal()),
  };
};

export default ModalComponentContent;
LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8488
2

Za mały fragment kodu. Gdzieś jak się domyślam, masz logikę pokazywania modala/spinnera np. tam masz isLoading - jak on w prawdziwym kodzie jest aktualizowany? Tak samo co jest w getSomeDataFromBackend();?

Dlaczego jeśli usunę getSomeDataFromBackend modal ładuje się połowę szybciej.

Moja robocza hipoteza jest taka, że w obydwu przypadkach tyle samo ci się ładuje, tylko komponent się nie uaktualnia prawidłowo i jak przez przypadek się zaktualizuje, to się pokaże.

No ale nie wiem, czy tak jest - tylko hipoteza.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.