首页 > 其他分享 >React基础篇——九、Portals

React基础篇——九、Portals

时间:2022-10-22 17:23:18浏览次数:51  
标签:Portals container 基础 React Modal props 组件

九、Portals

React16的Portals特性让我们可以把组件渲染到当前组件树以外的DOM节点上。典型的应用场景是渲染全局的应用弹框,使用Portals后,任意组件都可以把弹框组件渲染到根节点上,以方便弹框的显示。

ReactDOM.createPortal(child,container)

child是可以被渲染React节点,例如React元素、由React元素组成的数组、字符串等。container是一个DOM元素,child被挂载到这个DOM。

创建一个Modal,挂载在根组件:

class Modal extends React.Componnet {
    constructor(props){
      super(props);
      this.container = document.createElement("div");
      document.body.appendChild(this.container);
    }
    componentWillUnmount(){
      document.body.removeChild(this.container);
    }
    render(){
      return ReactDOM.createPortal(
        <div className="modal">
          <span className="close" onClick={this.props.onClose}>&times;</span>
          <div className="content">
            {this.props.children}
          </div>
        </div>,
        this.container
       );
    }
}

在APP中使用Modal:

class App extends React.Componnet {
    constructor(props){
      super(props);
      this.state={showModal: true}
    }
    closeModal = () => {
      this.setState({showModal: true});
    }
    render(){
      return (
       <div>
         {this,state.showModal && 
         <Modal onClose = {this.closeModal}>Modal Dialog</Modal>
       </div>
      )
    }
}

 

标签:Portals,container,基础,React,Modal,props,组件
From: https://www.cnblogs.com/sxww-zyt/p/16816703.html

相关文章

  • React基础篇——十、自定义DOM属性
    十、自定义DOM属性React16之前会忽略不是把的HTML和SVG属性,现在React会把不识别的属性传递给DOM。React16之前:<divcust-attr="someting"></div>会被渲染成:......
  • 2022-2023-1 20221406 《计算机基础与程序设计》第八周学习总结
    2022-2023-120221406《计算机基础与程序设计》第八周学习总结作业信息班级链接 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求 https://www.cnblog......
  • 2022-2023-1 20221427 《计算机基础与程序设计》第八周学习总结
    2022-2023-120221427《计算机基础与程序设计》第七周学习总结作业信息班级链接(2022-2023-1-计算机基础与程序设计)作业要求(2022-2023-1计算机基础与程......
  • 2022-2023-1 20221326《计算机基础与程序设计》第八周学习总结
    班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:功能设计与面向对象设计、面向对......
  • Web基础
    1.html基础1.1.html头部1.1.1.定义和用法1.1.2.标题1.1.3.HTML<base>元素1.1.4.HTML<link>元素1.1.5.HTML<style>元素1.1.6.HTML<meta>元素1......
  • 防火墙基础之交换机与防火墙安全防护区域之间隔离​
    防火墙基础之交换机与防火墙安全防护区域之间隔离​原理概述:​防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之......
  • shell基础
    https://mp.weixin.qq.com/s?__biz=MzI2OTA3NTk3Ng==&mid=2649284689&idx=1&sn=6942854dcbefde0f5f2fe563bbfb8888&chksm=f2f99336c58e1a2053fa294af14efd41a4a7c64d219ca0......
  • c语言基础理解(原创)
        家中小女初上大学开学计算机课程,学习C语言时遇到困难,为帮助她尽快入门,特写了这篇基本概念理解,希望帮她快速认识清楚C语言的本质。发到博客园上,也帮助同样的C语言......
  • 基础篇——六、表单
    六、表单表单元素在React中自身维护一些状态,这些状态默认情况下是不受react控制的,这类状态不受react控制的表单元素称为非受控组件。在React中,状态的修改必须通过组件的s......
  • 基础篇——七,render新的返回类型
    七,render新的返回类型React16之前,render方法必须返回单个元素。现在,render支持两种新的返回类型:数组(有React元素组成)和字符串。render(){return[<likey="a">a......