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>

07-26 09:34