React Portals

简介

        React Portal 可以将组件渲染到dom树的不同位置,同时可以渲染到任意父级元素,可以实现漂浮层功能。

使用样例

        本篇文章通过React Portals实现对话框,下面将会给出具体实现。

protal组件

Portal.jsx

import {useState} from "react";
import ReactDOM from "react-dom";
import "./Portal.css"
export const Portal = () => {const [visible, setVisible] = useState(false);if (!visible){return <div><button onClick={()=>setVisible(true)}>打开对话框</button></div>}return ReactDOM.createPortal((<><div className="portal-sample"><div>这是一个对话框!</div><br /><button onClick={()=>setVisible(false)}>关闭对话框</button></div></>), document.getElementById("dialog-container"))
}

Portal.css

.portal-sample {position: absolute;padding: 20px;width: 500px;height: 300px;left: 50%;top: 50%;transform: translate(-50%, -50%);background-color: #fff;border-radius: 10px;border: 1px solid #ddd;box-shadow: 0px 0px 20px 2px #ddd;
}

App.js

function App() {return (<Portal/>);
}export default App;

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><link rel="icon" href="%PUBLIC_URL%/favicon.ico" /><meta name="viewport" content="width=device-width, initial-scale=1" /><meta name="theme-color" content="#000000" /><metaname="description"content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /><!--manifest.json provides metadata used when your web app is installed on auser's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/--><link rel="manifest" href="%PUBLIC_URL%/manifest.json" /><!--Notice the use of %PUBLIC_URL% in the tags above.It will be replaced with the URL of the `public` folder during the build.Only files inside the `public` folder can be referenced from the HTML.Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" willwork correctly both with client-side routing and a non-root public URL.Learn how to configure a non-root public URL by running `npm run build`.--><title>React App</title></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><!--This HTML file is a template.If you open it directly in the browser, you will see an empty page.You can add webfonts, meta tags, or analytics to this file.The build step will place the bundled scripts into the <body> tag.To begin the development, run `npm start` or `yarn start`.To create a production bundle, use `npm run build` or `yarn build`.--><div id="dialog-container"></div></body>
</html>

使用效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记——C++运算符之赋值运算符

上次我们说到C的运算符共有四种&#xff0c;分别是算术运算符&#xff0c;赋值运算符&#xff0c;比较运算符和逻辑运算符 &#xff0c;下面介绍赋值运算符&#xff0c;赋值运算符主要的种类及作用如下表所示。 #include<bits/stdc.h> using namespace std; int main(){…

听GPT 讲Rust源代码--compiler(30)

File: rust/compiler/rustc_const_eval/src/transform/promote_consts.rs 在Rust的编译器源代码中&#xff0c;rust/compiler/rustc_const_eval/src/transform/promote_consts.rs文件的作用是执行常量传播和优化的转换过程。 该文件中的PromoteTemps结构体是一个转换器&#xf…

2024年Python面试题

面试是每一位求职者都要经历的过程&#xff0c;而对于Python开发者来说&#xff0c;掌握Python的基础知识和应用场景是至关重要的。以下是几个具有代表性的Python面试题&#xff0c;通过这些题目&#xff0c;我们可以一窥Python的深度和广度。 问题一&#xff1a;Python中的装…

插槽slot涉及到的样式污染问题

1. 前言 本次我们主要结合一些案例研究一下vue的插槽中样式污染问题。在这篇文章中&#xff0c;我们主要关注以下两点: 父组件的样式是否会影响子组件的样式&#xff1f;子组件的样式是否会影响父组件定义的插槽部分的样式&#xff1f; 2. 准备代码 2.1 父组件代码 <te…

STM32-03-STM32HAL库

文章目录 STM32HAL库1. HAL库介绍2. STM32Cube固件包3. HAL库框架结构4. 新建HAL版本MDK工程 STM32HAL库 1. HAL库介绍 HAL库 HAL&#xff0c;英文全称 Hardware Abstraction Layer&#xff0c;即硬件抽象层。HAL库是ST公司提供的外设驱动代码的驱动库&#xff0c;用户只需要调…

【已解决】在开启ssh和sshd状态下,XShell无法连接到VMware虚拟机中的Linux操作系统

【已解决】在开启ssh和sshd状态下&#xff0c;XShell无法连接到VMware虚拟机中的Linux操作系统 XShell无法连接到VMware虚拟机中的Linux操作系统&#xff0c;今天上线突然发现XShell无法连接到VMware虚拟机中的Linux操作系统&#xff0c;但是找了很多解决方案都没有解决&#x…

【图像拼接/视频拼接】论文精读:Seamless Video Stitching from Hand-held Camera Inputs(LPVW)

第一次来请先看这篇文章:【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用说明、创新思路分享等(不定期更新) 图像拼接系列相关论文精读 Seam Carving for Content-Aware Image ResizingAs-Rigid-As-Possible Shape ManipulationAdap…

【STM32】STM32学习笔记-定时器定时中断 定时器外部时钟(14)

00. 目录 文章目录 00. 目录01. 定时器中断相关API1.1 TIM_InternalClockConfig1.2 TIM_TimeBaseInit1.3 TIM_TimeBaseInitTypeDef1.4 TIM_ClearFlag1.5 TIM_ITConfig1.6 TIM_Cmd1.7 中断服务函数1.8 TIM_ETRClockMode2Config 02. 定时器定时中断接线图03. 定时器定时中断示例0…

命令行模式的rancher如何安装?

在学习kubectl操作的时候&#xff0c;发现rancher也有命令行模式&#xff0c;学习整理记录此文。 说明 rancher 命令是 Rancher 平台提供的命令行工具&#xff0c;用于管理 Rancher 平台及其服务。 前提 已经参照前文安装过了rancher环境了&#xff0c;拥有了自己的k8s集群…

html5中各标签的语法格式总结以及属性值说明

有关闭标签的元素 a元素 <a href"" target"" title""></a>表格相关元素 table元素&#xff1a;表格标签caption元素&#xff1a;表头thead元素tbody元素&#xff1a;表格主体元素tfoot元素th元素tr元素&#xff1a;行标签td元素&…

centoss7安装mysql详细教程

【MySQL系列】在Centos7环境安装MySQL_centos7安装mysql-CSDN博客 【MySQL系列】在Centos7环境安装MySQL_centos7安装mysql-CSDN博客 【MySQL系列】在Centos7环境安装MySQL_centos7安装mysql-CSDN博客

VMware17 下载安装教程

VMware17 下载安装ubuntu22.04虚拟机安装 一、VM安装 1.打开官方下载地址&#xff1a;https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 跳转页面后&#xff0c;点击左边的Download oad now&#xff0c;下载的就是最新版的 Workstation 17 …

[元带你学: eMMC协议 31] CRC 错误检测保证可靠性

依公知及经验整理,原创保护,禁止转载。 专栏 《元带你学: eMMC 协议》 <<<< 返回总目录 <<<< 前言 图片来源: www.elprocus.com 对于 eMMC 存储设备,CRC 校验在数据传输过程中起到了重要的作用。它能够检测出数据在存储和传输过程中的错误,确保…

知识付费平台搭建?找明理信息科技,专业且高效

明理信息科技知识付费saas租户平台 在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和…

机械臂运动学逆解(牛顿法)

机械臂运动学逆解&#xff08;牛顿法&#xff09; 常用的工业6轴机械臂采用6轴串联结构&#xff0c;虽然其运动学正解比较容易&#xff0c;但是其运动学逆解非常复杂&#xff0c;其逆解的方程组高度非线性&#xff0c;且难以化简。   由于计算机技术的发展&#xff0c;依靠其…

其他排序(基数排序,希尔排序和桶排序)(数据结构课设篇3,python版)(排序综合)

本篇博客主要详细讲解一下其他排序&#xff08;基数排序&#xff0c;希尔排序和桶排序&#xff09;也是排序综合系列里最后一篇博客。第一篇博客讲解的是LowB三人组&#xff08;冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff09;&#xff08;数据结构课设篇1&…

CentOS:安装gitlab

1、安装依赖 yum install -y curl policycoreutils-python openssh-server #centos8没有policycoreutils-python yum源&#xff0c;不用管 2、启动ssh并设置为开机自启动 systemctl enable sshd systemctl start sshd 3、安装Postfix来发送通知邮件。 yum install postfix…

【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置

目录 1、Hive安装 2、HiveJDBC访问 2.1、启动hiveserver2服务 2.2、连接hiveserver2服务 2.3、注意 3、Hive常用交互命令 3.1、“-e”不进入hive的交互窗口执行sql语句 3.2、“-f”执行脚本中sql语句 4、Hive其他命令操作 4.1、退出hive窗口 4.2、在hive cli命令窗口…

OpenSSL——升级

OpenSSL&#xff08;Open Secure Sockets Layer&#xff09;是一个开源的软件库&#xff0c;提供了SSL和TLS协议的实现&#xff0c;用于加密通信。它广泛用于安全连接&#xff0c;例如在网站上通过HTTPS协议进行安全的数据传输. 但是从openssl申请道德证书是不安全的。对于网站…

第10课 实现多对多音视频会议功能

在前两节课&#xff0c;我们将推流端与播放端合并为一对一音视频聊天功能并解决了关键的回声问题&#xff0c;在此基础上&#xff0c;我们可以进一步改进实现多对多的视频会议功能。 1.备份demo9并修改demo9为demo10。 2.打开工程文件&#xff0c;修改mfc为四分屏画面。 界面…