DOM не готов вовремя после componentDidMount в React

Я вызываю функцию в React внутри componentDidMount, которая запрашивает DOM, однако DOM не отображается вовремя, хотя я вызываю ее после componentDidMount.

Странно то, что в webpack все работает нормально, а модель DOM отрисована и готова для моего querySelectorAll. Однако когда построено, это не так. Я пробовал использовать несколько типов серверов, и они всегда одинаковы.

Мои первоначальные мысли заключаются в том, что минимизация кода как-то портит его.

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

Есть код, который можно нам показать? Возможно, мы сможем помочь отладить его, если вы позволите нам :)

Kyle Richardson 17.04.2018 23:04

Я не уверен, что я могу добавить к этому, но в настоящее время я имею дело с таким же поведением - у меня есть анимированная прокрутка на componentDidMount, которая не может правильно получить элементы offsetTop. Если я заверну его в setTimeout даже на 1 мс - offsetTop вычисляется правильно, поэтому практически я бы сказал, что реакция не выполняется с DOM в componentDidMount

Stormherz 18.04.2018 16:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
998
2

Ответы 2

componentDidMount вызывается только один раз в жизненном цикле любого компонента, повторная инициализация компонента не выполняется. Вы когда-нибудь пробовали с componentDidUpdate. Это попадание при обновлении компонента.

Как объяснено в этот ответ, componentDidMount вызывается после того, как все дочерние компоненты были смонтированы, но до того, как были смонтированы какие-либо родительские компоненты.

Для меня это сработало, чтобы задержать мой код с помощью setTimeout() (с задержкой 0 мс) изнутри componentDidMount.

Другие вопросы по теме