React 16发布了许多新功能。其中之一是ReactDOM.createPortal(child, container)
API,它便于从容器中进行视觉分解。
然而,它似乎不仅破坏了它的容器,而且破坏了我从Web开发的第一天学到的基本HTML规则。CreatePortal API允许您将组件呈现出其父级,并打破我们期望的HTML结构约定。
另一方面,我们确实获得了更多的灵活性,现在可以在兄弟或其他组件中呈现DOM。
IMO,我不认为这是通过在中交易HTML约定来获得更多灵活性的一个好办法。另外,官方提供的example也不能让我信服。
我好奇的是:
是否有人面临CreatePortal API必须满足的任何条件?
谢谢
最佳答案
文档中的示例是createPortal
非常有用的一些情况,特别是对话框、悬停卡和工具提示。
docs还特别说明:
注:
重要的是要记住,在使用门户时,您需要确保遵循正确的可访问性准则。
例如,可以使用createPortal()
构建docsshow how a modal。您会注意到模式是在#modal-root
元素中创建的,它是一个根元素,与#app-root
元素一起。这是一个很好的例子,说明如何在不违反任何HTML规则的情况下使用createPortal()
。
<div id="app-root"></div>
<div id="modal-root"></div>