当前位置: 首页 > news >正文

React 传送门 Portals

Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案。

ReactDOM.createPortal(child, container)

第一个参数(child)是任何可渲染的 React 子元素,例如一个元素,字符串或 fragment。第二个参数(container)是一个 DOM 元素。

简单粗暴 小栗子🌰

const Toast:React.FC = (props) => {
    let node = document.createElement('div')
    
    useEffect(() => {
        const app: any = document.querySelector('#tt')
        app.appendChild(node)
        console.log(app)
    }, [node])

    return createPortal((
    <h3>{props.children}</h3>
    ), node);
}

通俗一点可以这么理解,Portals 可以吧 当前jsx文件 渲染绕其他组件的 Element元素上

👆上面的栗子🌰

  • node可以理解为一个容器,用来承载当前的jsx 组件
  • app 是目的dom元素

⚠️注意点比较简单

  • 就是要把createPortal放在render后面,来返回渲染,函数组件如上咯
  • 当在使用 portal 时, 记住管理键盘焦点就变得尤为重要。

Portal 进行事件冒泡,并不会随着传送们而改变,而是在挂载Portal组件的地方来管理事件

可以通过这个栗子来看

相关文章:

  • 前端必须掌握的自动化部署(webhooks)
  • Gatsby精粹,面向未来的blog
  • shell基本指南
  • create-react-app 没有[src] 文件夹(记一次问题)
  • antdv4 升级指北
  • [助力job]React-mode[进阶] (React模式梳理 )
  • 记-vue vue.config.js 配置webpack全局变量
  • 浅谈前端架构自动化-cdn刷新预热自动化脚本
  • 了不起的certbot申请免费SSL证书
  • 记-react-connect中使用forwardRef 问题。
  • ES2020(ES11)新特性
  • 新版 Chrome浏览器在 http协议下无法获取到摄像头、麦克风权限
  • Monorepo[单一代码库] 与MicroService[微服务] 架构
  • 搭建私有npm构建JSSDK
  • Docker 部署 Flask
  • [case10]使用RSQL实现端到端的动态查询
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2017-09-12 前端日报
  • Git的一些常用操作
  • Hibernate最全面试题
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Laravel 菜鸟晋级之路
  • windows-nginx-https-本地配置
  • 和 || 运算
  • 聊聊flink的TableFactory
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 试着探索高并发下的系统架构面貌
  •  一套莫尔斯电报听写、翻译系统
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 《码出高效》学习笔记与书中错误记录
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (2)(2.10) LTM telemetry
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (三)elasticsearch 源码之启动流程分析
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)树状数组
  • ../depcomp: line 571: exec: g++: not found
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net core 6 集成和使用 mongodb
  • .NET MVC 验证码
  • .NET 服务 ServiceController
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 药厂业务系统 CPU爆高分析
  • .pop ----remove 删除
  • .考试倒计时43天!来提分啦!
  • @Valid和@NotNull字段校验使用
  • [100天算法】-二叉树剪枝(day 48)
  • [Android] Upload package to device fails #2720
  • [C#C++]类CLASS
  • [C/C++]数据结构 堆的详解