reactjs - 始终在根节点上渲染 React 组件
问题描述
这是问题所在:我有一个 ModalBaseComponentLayout,每次调用 ModalBaseComponentLayout 时我都希望它始终呈现在父级上。
比方说,正在发生的事情是:
<div id="root">
<div class="ONE modal fade in">
<div class="modal-header"></div>
<div class="modal-content">
<div class="TWO modal fade in">
<div class="modal-header"></div>
<div class="modal-content"></div>
<div class="modal-footer"></div>
</div>
</div>
<div class="modal-footer"></div>
</div>
</div>
我想要发生的是
<div id="root">
<div class="ONE modal fade in">
<div class="modal-header"></div>
<div class="modal-content">
</div>
<div class="modal-footer"></div>
</div>
<div class="TWO modal fade in">
div class="modal-header"></div>
<div class="modal-content"></div>
<div class="modal-footer"></div>
</div>
</div>
所以基本上我想要发生的是在根节点上渲染我的模态组件,而不是模态的子节点。
解决方案
看看 React 门户:https ://reactjs.org/docs/portals.html
基本上是这样的:
render() {
// React does *not* create a new div. It renders the children into `domNode`.
// `domNode` is any valid DOM node, regardless of its location in the DOM.
return ReactDOM.createPortal(
this.props.children,
domNode
);
}
推荐阅读
- python-3.x - 如何根据第二列值删除数据框中的重复项?
- c++ - 使用工具时如何查找未发生的段错误
- merge - SSIS将左侧2行的连接数据合并为右侧1行
- html - 如何在不使用绝对位置的情况下在 div 的底部和中心获取 img
- python - 如何删除不同元组中的相同元素
- c# - 最大值不适用于 Razor 中的 EditorFor 字段
- javascript - 无法在 Firestore 子集合中加载文档
- android - 如何在 Android 样式中更改字体类型、字体大小和粗体文本 (PopUpMenu)
- javascript - 带有 if 语句的 chart.js 标签
- angular - 如何在 Angular 表单中禁用按钮