reactjs - 在 React 中使用 refs 和 portals 从子级渲染到父级
问题描述
我想使用在父组件上创建的 ref 将子组件的反应门户呈现到父组件。我试图让它工作,但在我的实验中ReactDOM.createPortal()
未能渲染任何东西。
这是我要完成的示例: https ://codesandbox.io/s/0qk3pxrkwn
请注意,永远不会渲染文本“我将在我的父母中渲染”。
我在这里做错了吗?
上下文是我的子组件是一个下拉列表,而我的父组件将子组件包装在overflow: hidden
其中以实现一些时髦的样式。要显示子项的下拉部分,我需要在父项中呈现该内容。对于这个用例,门户网站似乎是一个非常好的模式。
解决方案
来自官方门户文档:
门户提供了一种一流的方式来将子级呈现到存在于父组件的 DOM 层次结构之外的 DOM 节点中。
如果您仍然想这样做,请在父组件中执行类似的操作:
<ParentComponent>
<ChildWhichCreatesPortal />
<PortalContainer />
</ParentComponent>
PortalContainer
永远不会重新渲染的东西在哪里:
class PortalContainer extends React.Component {
shouldComponentUpdate() {
return false
}
render() {
<div id="id-to-find-dom-node"></div>
}
}
我上面指定的方式应该可以工作,但我没有尝试
推荐阅读
- java - 为属性值转义 XML 字符 Java
- mysql - 使用 JSON_OBJECT 选择查询
- python - 无法在 Windows 上安装 python-libmemcached
- c# - 我有几个属性如何在方法中制作它们
- label - Gnuplot,热图,标记某个点
- angular - 从 catchError 中的返回 observable 中获取值
- corda - Corda 在 Java 中遍历事务链
- json - 仅当不在 Unity 3D 播放器中调试时出现 NullReference 错误
- vba - 根据excel中的列表将PDF文件移动到特定文件夹
- android - debug.keystore 丢失。无法在 .androdid 文件夹中找到它