我有一个组件,它基本上呈现如下:
<div ref={containerRef}>
<Child containerRef={containerRef} />
</div>
我这样做是因为Child
' 的渲染逻辑取决于包含 div 的“边界客户端矩形”——子级使用父级的左/上位置来使用 JavaScript 计算自己的绝对位置。通过传入containerRef
to Child
,我可以访问containerRef.current.getBoundingClientRect()
它的各种位置属性。
问题是在初始渲染时,containerRef
没有设置。直到第二次渲染才设置。
我该如何 A.) 强制第二次渲染,B.) 强制将其设置在第一次渲染上(可能是不可能的),C.) 以不同的方式解决这个问题,以便孩子可以访问其父母的容器?
也许如果Child
在它自己的子 HTML 上设置一个 ref,我可以简单地使用命令式代码来访问该节点的父节点?