问题描述
我有一个包含一些带有文本元素的组件。
基于其他内容,文本可以是某些单词,也可以是一堵墙。从父母那里,我需要随时知道孩子内部元素的确切高度
我尝试使用回调引用,但无济于事。我只能得到第一个值,但随后我需要它来更新
https://codesandbox.io/s/nervous-mendeleev-xf2cg?file=/src/App.js
这是代码示例。
更新:当我直接检查高度时,我注意到的一件事是我得到了先前的值(有点像当您使用setState并没有意识到它是异步的)
当小(高度:〜60)时,显示为〜100
反之亦然
解决方法
当我直接检查身高时我注意到的一件事是我得到了
以前的值
您仍然可以挽救该解决方案。之所以得到先前的值,是因为您正在立即检查高度,但是问题在于该组件未使用新的words
完成渲染(即,参照高度仍将返回先前的高度)。>
您可以做的是利用useEffect
。完成组件渲染后(类实现中的等效项为componentDidUpdate
),即开始检查其高度时。
useEffect(() => {
// the component is done rendering - now you can check for its new height here
},[words,onClick]);