微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

所有后代完成渲染后获取引用

如何解决所有后代完成渲染后获取引用

我正在处理react-leaflet自定义控件,并且我有一个需要其引用的组件。但是此组件具有动态呈现子级的功能。像这样:

<LayersControl ref={controlRef => this.controlRef = controlRef}>
  {this.props.children}
</LayersControl>

孩子们也有自己的孩子。在渲染这些子级时,它们会影响基本的传单逻辑。

(对于不熟悉或好奇的人,LayersControl将创建一个L.control.layersLayersControl的子代将始终是LayersControl.BaseLayerLayersConrol.Overlay然后,这些子节点将具有子节点,这些子节点可以是任意数量的尚不知道的反应叶层或组件。随着.BaseLayer.Overlay组件的安装,它们将修改基础的L.control.layers对象。)

在所有后代都呈现后,我试图获取对组件的传单实例的引用。但是,如上所述调用ref函数,不会发生这种情况。尽管我的引用确实在componentDidMount中定义,但它并不完整。例如,我在cdm中需要的一些关键属性尚不可用(即._container属性)。

我知道他的引用是如何工作的-根元素渲染和安装后,即使子代和后代尚未安装,它们也会为您提供引用。

除了没有像做setTimeout并在10ms之后获得引用这样的技巧外,一旦所有后代都完成渲染,如何获得该元素的引用?

Working demo of the issue

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。