В моем приложении есть модальное окно, которое иногда открывается примерно через 30 секунд. Профилировщик chrome devtools показывает, что реагирующие компоненты заканчивают рендеринг, затем появляется длинный промежуток, когда нет сообщения о том, что код javascript запущен, а затем модальное окно становится видимым на экране. Во время этого пустого промежутка профилировщик показывает только длинную анимацию, происходящую в разделе «Взаимодействия».
Что я могу сделать, чтобы модальное окно открывалось быстрее? Что делает браузер во время этой анимации?
Информация о приложении
- Использует реакцию + редукс
- Использует redux-saga для побочных эффектов
- Использует редукционную форму для управления формами
- Использует компоненты пользовательского интерфейса semantic-ui-react.
- Использует стилизованные компоненты для CSS
Информация о модальном окне
- Существует поле ввода автозаполнения, где вы можете искать элементы. При выборе элемента из результатов поиска отправляется действие, запускающее сагу.
- В саге делается вызов API для получения дополнительной информации об элементе.
- После завершения вызова API отправляется действие, которое устанавливает свойство
initialValues
редукционной формы, используемой внутри модального окна. - Затем отправляется другое действие для открытия модального окна.
Другие наблюдения
- Удаление полей/компонентов из формы внутри модального окна ускоряет его открытие (~5-6 секунд по сравнению с ~30 секундами). Однако ни один конкретный компонент не является неисправным, поскольку удаление любого компонента имеет тот же эффект, что и удаление любого другого компонента.
- В Chrome открытие занимает до 30 секунд, а в Firefox — до 5-6 секунд.
- Отправка действия для открытия модального окна перед отправкой действия, которое устанавливает начальные значения избыточной формы, также делает его открытие намного быстрее.