portal

组件默认会作为父组件的后代渲染到页面中
但是有些情况下 这种方式会带来一些问题
通过portal可以将组件渲染到页面中的指定位置
使用方法:
* 1.在index.html添加一个新的元素

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>学习日志</title>
</head>
<body>
<div id="root"></div>
<div id="a-root"></div></body>
</html>

2.修改组件的渲染方式
* 通过ReactDOM.createPortal()作为返回值创建元素
* 参数:
* 1. jsx(修改前return后的代码)
* 2. 目标位置(DOM元素)

import React from 'react';
import ReactDOM from "react-dom";// 获取a-root的根元素
const aRoot = document.getElementById('a-root');const Demo = (props) => {return ReactDOM.createPortal(修改前的jsx代码, apRoot);
};export default Demo ;

遮罩层案例

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>学习日志</title>
</head>
<body>
<div id="root"></div><!--这个容器专门用来渲染遮罩层-->
<div id="backdrop-root"></div></body>
</html>
import React from 'react';
import './Backdrop.css';
import ReactDOM from "react-dom";// 获取backdrop的根元素
const backdropRoot = document.getElementById('backdrop-root');const Backdrop = (props) => {return ReactDOM.createPortal(<div className="backdrop">{props.children}</div>, backdropRoot);
};export default Backdrop;

遮罩层样式可以自己设计 这里只提供参考

.backdrop{position: fixed;top: 0;bottom: 0;left: 0;right: 0;background-color: rgba(0,0,0,.3);z-index: 9999;
}

在要使用的组件上 套上这个组件标签就可以了

import Backdrop from "../Backdrop/Backdrop";const ConfirmModal = props => {return <Backdrop>原来组件的jsx代码</Backdrop>;
};export default ConfirmModal;

Reac-18 portal传送门相关推荐

  1. react全家桶实战(千峰教育)

    说明:本笔记为本人基于千锋教育2022版React全家桶教程_react零基础入门到项目实战完整版的学习笔记,知识点不清或不全,可以到视频教程中学习 文章目录 一.安装create-react-app ...

  2. [react] 举例说明React的插槽有哪些运用场景

    [react] 举例说明React的插槽有哪些运用场景 我觉得这里的插槽,指的应该是组合组件,而不是portal(传送门),因为对比vue中的插槽,只是父组件在子组件中间加入一系列的内容,然后子组件可 ...

  3. Codeforces Round #439 (Div. 2)

    一句话题意: A:传送门 题意:给定两个长为\(n\)的数组\(a\),\(b\),令\(ans=\)有序对\((i,j)\)的个数使得\(a_i\ xor\ b_j\)在这\(2n\)个数中出现过, ...

  4. H12-723题库-个人整理笔记

    H12-723: Agile Controller-Campus 系统架构属于 C/S 架构. A.正确 B.错误 答案:B Agile Controller-Campus 系统架构属于 B/S 架构 ...

  5. python代码库-吐血整理!绝不能错过的24个Python库

    Python有以下三个特点: 易用性和灵活性 全行业高接受度:Python无疑是业界最流行的数据科学语言 用于数据科学的Python库的数量优势 事实上,由于Python库种类很多,要跟上其发展速度非 ...

  6. 图论500题 慢慢写

    题目来源 https://blog.csdn.net/ffq5050139/article/details/7832991 这篇博客用来记录自己刷的图论题 先占个坑 所有题目都来自上面的链接 会慢慢更 ...

  7. linux 游戏大作,20款值得一试 外媒盘点Mac平台游戏大作

    原标题:20款值得一试 外媒盘点Mac平台游戏大作 外媒为我们盘点了最好玩的20款将Mac游戏,这些游戏不止在Mac上,多数平台均已支持,在Mac上体验更佳,感兴趣的朋友一起来试试看吧.(图片来自te ...

  8. ui设计网站:全网最热门的30个UI设计网站合集

    转载一篇ui设计网站整理的文章 1.UI Garage 传送门:https://uigarage.net/ UI设计灵感炸裂之地,每日精心挑选UI灵感和模式,可以从平台.排序方式.类别.日期等分类筛选 ...

  9. 视频教程-主流前端框架下ArcGIS API for JavaScript的开发-其他

    主流前端框架下ArcGIS API for JavaScript的开发 毕业于中国矿业大学地理信息科学专业.现就任于全球领先的GIS公司,主要担任地理平台研发工作,日常工作任务是ArcGIS JS A ...

最新文章

  1. PHP数组式访问接口ArrayAccess
  2. 未来哲学的六个问题域
  3. vlookup反向查询_【Excel 函数】Vlookup 正反向查询
  4. 从系列去雨论文看如何创新
  5. 华为上机考试题系列(二):HJ107求解立方根
  6. 将Java Flight Recorder与OpenJDK 11结合使用
  7. 在deepin中安装docker
  8. read 系统调用剖析【转】
  9. 制造爆款:建立“增长团队”
  10. 关于秒杀的系统架构优化思路
  11. 无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域。...
  12. 原版Caffe在Windows10 VS2015 python3.7 CPU版本 详细安装笔记 BVLC caffe
  13. “小马激活”病毒新变种分析报告
  14. 黑马程序员—我的面试,我的学习,我的经历
  15. 各种范文都有,到时不用找了。(值得收藏)
  16. 1265:【例9.9】最长公共子序列 LCS 朴素做法O(n*2)
  17. Html+CSS 文本的强制换行
  18. Linux下安装libgdal库,libjpeg库和libtiff库
  19. linux u8 u16 u32 u64,C 语言printf打印各种数据类型的方法(u8/s8/u16/s16.../u64/doub
  20. springmvc 跨域访问

热门文章

  1. 公司建网站多少钱?【网站多少钱】
  2. 元旦了,送给程序员的祝福礼!!
  3. html页面tree方法,etree.html的用法问题
  4. 编程基础之二十一:导师巴贝奇与Ada(四)
  5. 5G标准正式出炉 5G的杀手锏业务又在哪里呢
  6. Android 腾讯手机管家 报毒 a.gray.PiggyGoldcoin.a
  7. mc服务器 领地插件配置文件,《我的世界》领地插件 领地插件详细使用教程
  8. hdu2121 朱刘算法不定根
  9. 大户人家的孝道中有一条叫做晨昏定省
  10. 1004 Let the Balloon Rise