У меня есть приложение React, в котором я скрываю / показываю элемент, основанный на состоянии, и хочу выполнить некоторые вычисления с этим элементом DOM после изменения переменной состояния.
Я пробовал использовать useLayoutEffect
, но он по-прежнему работает до DOM обновляется, поэтому мои расчеты бесполезны. Я неправильно понимаю useLayoutEffect
? Я неправильно его использую?
Вот что у меня
const myComponent = () => {
const elem = useRef()
const [isElemVisible, setIElemVisible] = useState(false)
useLayoutEffect(() => {
// I want this to run AFTER the element is added/removed from the DOM
// Instead this is run before the element is actually modified in the DOM (but the ref itself has changed)
elem.current.getBoundingClientRect() // do something with this object if it exists
}, [elem.current])
return (
<div id="base-element">
{ isElemVisible && (
<div id="element" ref={elem}></div>
)}
</div>
)
}