ReactDOM.createPortal

作者: whuisu | 来源:发表于2019-12-23 10:37 被阅读0次

createPortal 的调用方式是:

ReactDOM.createPortal(child, container)

第一个参数是一个 renderable React child
第二个参数是一个DOM元素

将index.html页面添加DOM节点来验证createPortal如何渲染

    <div id="root"></div>
    <div id="another-root"></div>
    <div id="another-container"></div>

大白话的意思是:
通过createPortal渲染的元素会被添加到另外的节点,同时点击事件会被触发;
而通过ReactDOM.render渲染的元素添加到新节点,但是点击事件没有触发。

image.png
import React from 'react';
import ReactDOM, { createPortal } from 'react-dom';

class HelloFromPortal extends React.Component {
    render(){
        return (
            <div onClick={() => {alert("我爸应该知道我被点击了")}}>
              我是传送门里出来的Portal
            </div>
        )
    }

}

class AmISameAsPortal extends React.Component {
    render() {
        return(
            <div onClick={() => {alert("是不是从传送门里出来呢? 我妈应该知道我被点击了")}}>
              是不是从传送门里出来呢? not Portal
            </div>
        )
    }
}

class HelloReact extends React.Component {
    render(){
        return (
            <div>
                <h1>父组件</h1>
                <div onClick={() => {alert('YES  Dispaly')}}>
                    {createPortal(<HelloFromPortal />, document.getElementById('another-root'))}
                </div>
                XXXX
                XXXX
                <div onClick={() => {alert("No display")}}>
                    {ReactDOM.render(<AmISameAsPortal />, document.getElementById('another-container'))}
                </div>

            </div>


        )
    }
}

ReactDOM.render(<HelloReact />, document.getElementById('root'));

相关文章

  • React-01 ReactDOM相关

    1.createPortal ReactDOM.createPortal(vNode,container) Por...

  • React Portals

    Protals用法: ReactDOM.createPortal(child, container) 看了官方文档...

  • ReactDOM.createPortal

    createPortal 的调用方式是: 第一个参数是一个 renderable React child第二个参数...

  • React进阶

    ReactDOM.createPortal(child, container):传送门。将子节点渲染到存在于父组件...

  • # Portals

    插槽:将一个react元素渲染到指定的DOM容器中 ReactDOM.createPortal(React 元素,...

网友评论

    本文标题:ReactDOM.createPortal

    本文链接:https://www.haomeiwen.com/subject/fpcznctx.html