【发布时间】:2021-10-06 03:32:00
【问题描述】:
我有一个动态组件,我在其中将子项作为道具传递。 所以道具看起来像:
interface Props {
...some props
children: React.ReactNode
}
export default Layout({...some props, children}: Props) {...}
我需要在Layout 组件中访问子元素的大小(高度和宽度)。 请注意,孩子来自完全不同的组件并且是不相关的。
我可以按如下方式使用 Layout 组件:
<Layout ...some props>
<Child1 /> // I need to know the height and width of this child
<Child2 /> // as well as this child
<Child3 /> // and this child.
</Layout>
我怎样才能动态地做到这一点?我是否必须以某种方式将ReactNode 转换为HTMLDivElement?请注意,我无法将refs 的数组作为道具传递给Layout。因为使用Layout的页面是动态生成的。
因为很多人并不真正理解我所说的动态生成是什么意思。这意味着使用 Layout 组件的页面可以传入 x 个子级。孩子的数量是未知的,但永远不会是0。
【问题讨论】:
-
您可以使用 ref 转发,这样您就不必将 refs 作为 props 传递,并且可以直接从您的自定义
组件访问 ref。 -
@KartikMalik 我不太明白。我想访问 Layout 组件的高度和宽度,而不是 Child 组件。是否有代码示例可以进一步说明您的意思?
-
你能展示一下页面是如何生成的吗?您是选择如何显示页面内容的人,这并不难,但我们需要更多代码来帮助您。您是否只是将
{children}添加到您的布局组件中?
标签: javascript reactjs web next.js