react的portals传送门实现模态框

引言: 有时候我们需要使用某个组件不是按照正常的层级来显示,比如,我们在一个左侧为菜单,右侧为功能的系统里使用弹出框(类似于antdPro),如果弹出框按照层级展示在功能里,他的位置就会显得有些奇怪,我们想要的是弹出框在整个屏幕中间弹出来,而不是在功能里中心位置展示。
想要实现这个需求,必须打破常规。将弹出框在body中展示,这样弹出框和#root是同级的,就不再受左侧菜单的制约。
代码实现

传送门组件

import React, { Component } from "react";
import { createPortal } from "react-dom";

import PortalsContent from "./content";

export default class Portals extends Component {
    render() {
        return createPortal(
          <PortalsContent>{this.props.children}</PortalsContent>,
          document.body
        );
    }
}

传送门组件里内容

import React, { Component } from 'react';

export default class PortalsContent extends Component {
  render() {
    return (
      <div>
        传送门的内容
      </div>
    )
  }
}

注意:createPortal有两个参数,第一个是需要传送的组件,第二个是要传送到那里去,this.props.children是将该组件下的所有内容都展示出来

最终效果

在这里插入图片描述

CentOS 7上安装Qt,可以按照以下步骤进行操作: 1. 首先,确保已经安装了gcc编译器。可以通过在终端执行命令`gcc -v`来检查是否已安装gcc。如果没有安装gcc或者需要更高版本的gcc,可以使用yum来安装或更新gcc。 2. 下载Qt安装包,可以从官方网站上下载相应的版本。然后将安装包解压到指定的目录。 3. 授权安装脚本的执行权限,可以使用`chmod +x filename`命令来给脚本文件添加执行权限。 4. 执行安装脚本,运行`./qt-installer.run`命令来启动可视化安装界面。按照界面提示进行安装,可以选择安装路径和组件。 5. 安装完成后,可以在安装路径下找到Qt的可执行文件,比如`/opt/Qt/Qt5.15.2/Tools/QtCreator/bin/qtcreator`。可以通过命令行或者图形界面启动Qt Creator。 以上是在CentOS 7上安装Qt的一般步骤,具体操作可能会因版本或其他因素而有所不同。建议在安装前仔细阅读相应的安装文档或官方指导,以确保正确安装和配置Qt。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [centos7安装QT及环境配置](https://blog.youkuaiyun.com/m0_57931726/article/details/120180973)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Centos7安装Qt](https://download.youkuaiyun.com/download/weixin_38522552/14040126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值