Я создал сообщение вчера и удалил его по ошибке. Мне нужно создать компонент с указанным стилем c. Проблема в том, что метод componentDidMount () создает некоторую мерцание при рендеринге компонента. Это время, когда CSS стал установленным.
Я думаю, что мой компонент требует ресурсов, поэтому componentDidMount()
происходит с небольшим кадром или двумя задержками. Вот почему я предоставляю здесь только фрагмент вместо полной демонстрации, моя маленькая демонстрация работает хорошо с мерцающим нулем c.
Затем я ввожу значение в методе рендеринга. Например:
componentDidMount(){
// the CSS rendering will lag by releasing a flickering :/
}
render(){
// awesome, by setting my style in the render the good style is returned instantly.
if (Math.round(window.scrollY + window.innerHeight +50) >= Math.round(document.body.scrollHeight)) {
document.documentElement.style.setProperty('--background-transition', "")
document.documentElement.style.setProperty('--is-page-bottom', "orange");
document.documentElement.style.setProperty('--background-transition', "all 0.3s ease-out")
}
else{
//setIsPageBottom_CSSVariable("rgba(84, 80, 79,0.85)")
document.documentElement.style.setProperty('--background-transition', "")
document.documentElement.style.setProperty('--is-page-bottom', "purple");
document.documentElement.style.setProperty('--background-transition', "all 0.3s ease-out")
}
Кто-то вчера сказал мне, что я должен использовать реагирующий React Hook для управления этим делом или componentDidMount, но componentDidMount в моем случае дает сбой из-за мерцания перед установкой соответствующего цвета фона.
Я новичок в React Hook, поэтому, если я хорошо понимаю, я могу сделать что-то вроде document.documentElement.style.setProperty в useEffect напрямую, и это будет согласовано с дизайном React-хука?
Между тем, я считаю, что мое решение просто хорошее, потому что при чтении официальной документации React отмечает, что :
Функция render () должна быть чистой Это означает, что он не изменяет состояние компонента, при каждом вызове возвращает один и тот же результат и напрямую не взаимодействует с браузером.
Если вам нужно взаимодействовать с браузером, выполните свою работу в componentDidMount () или другие методы жизненного цикла. Сохранение функции render () в чистоте облегчает понимание компонентов.
Хорошо, если я смогу подумать о моего компонента в непринужденной манере, так что это ни в коей мере не плохо не так ли? Просто не лучшая практика, которую я предполагаю. Мне посоветовали использовать addeventlistener, но здесь речь идет о мгновенном рендеринге моего стиля на первом компоненте рендеринга l oop. Таким образом, addeventlistener - это решение для другого случая, в котором я нахожусь.
В любом случае, какую альтернативу вы бы порекомендовали избежать мерцания при вставке моей настройки CSS в componentDidMount ()? Какая связь с крючком React?