考虑React Remix项目(功能组件)中的以下(最小)代码
<Parent>
<Child1 />
<Child2
<div1></div1>
<div2></div2>
/>
<Child3 />
</Parent>
我已经成功地从Child 2组件内部使用useElementSize()
钩子动态获取了div 1的高度值(已将ref附加到它),如下所示:
const [squareRef, { height }] = useElementSize();
return (
<section className="flex flex-col w-full">
<p className="mx-auto text-5xl font-bold">{height}</p>
<div className="w-full bg-black" ref={squareRef}>
...
);
但是我需要在父组件内部使用这个高度值,以便将条件样式应用到Child 1和Child 3。任何建议都将不胜感激,谢谢!
我已经尝试使用callback
和lifting up
状态,以及useContext
,所有这些都是按照React文档进行的,但我认为我走错了路。我也相信我可能会使问题过于复杂,但我已经卡住了几天。
1条答案
按热度按时间bz4sfanl1#
我认为您在这里要做的是使用您在父组件then you will be able to use
React.forwardRef
中使用的钩子将该ref传递给功能组件(子组件2),然后该组件将该ref附加到您感兴趣的div。非常肯定这给了你你正在寻找的,最终这是React的方式,让你通过裁判下来几乎像一个 prop 。
从文档中你的代码最终看起来像...