在这里插入图片描述

react没有slot插槽,但是可以直接通过{{props.children}}获取父组件标签中的内容

import React, { Component, useEffect } from 'react';
import { createPortal } from 'react-dom';
import CSSTransition from 'react-transition-group/CSSTransition';
import { Scrollbars } from 'react-custom-scrollbars';
import closePng from '../../static/icon/close.svg';
import './index.css';function Dialog(props) {const { left, top, width, height } = props;if (!document.querySelector('#dialog')) {const htmlDOM = document.createElement('div');htmlDOM.setAttribute('id', 'dialog');document.body.appendChild(htmlDOM);}useEffect(() => {if (!document.querySelector('#mask')) {const maskDOM = document.createElement('div');maskDOM.setAttribute('id', 'mask');document.body.appendChild(maskDOM);}return componentWillUnmount;}, []);// 移除弹框function componentWillUnmount() {// 有mask和dialog节点时候再移除if (document.querySelector('#mask') && document.querySelector('#dialog')) {const dialog = document.getElementById('dialog');document.body.removeChild(dialog);const mask = document.getElementById('mask');document.body.removeChild(mask);}}// 关闭弹框function onClose() {props.closeDialog(false);}// 内容const html = (<divclassName='dialog_box'style={{position: 'fixed',left,top,width,height,transform: `translate(-50%,-50%)`,}}><div className='dialog_header'><div>{props.title}</div><img className='close_icon' width='16' onClick={onClose} src={closePng} alt='x'></img></div><div className='dialog_body'><Scrollbars style={{ height: `100%`, width: `100%` }}><div>{props.children}</div></Scrollbars></div></div>);// createPortal(html, DOM)可以吧html注册到指定DOM里return <>{createPortal(html, document.getElementById('dialog'))}</>;
}
Dialog.defaultProps = {// title: '弹框',left: '50%',top: '40%',width: 600,height: 400,
};
export default Dialog;
//过度动画包裹着 可以删除
<CSSTransition in={state.isDialog} timeout={500}  classNames='dialog_animation'><>{state.isDialog && (<Dialog title={'提示'} isDialog={state.isDialog} closeDialog={closeDialogHandle}><div>111</div><button onClick={addHandler}>累加{num}</button></Dialog>)}</>
</CSSTransition>

react 弹框组件相关推荐

  1. 看完这篇不要告诉我不会封装ant design弹框组件了

    我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 获取前端学习知识 1设计需求 封装一个弹框组件 直接调用接口 2技术栈 ant design+react 设计第一步 绘制样式 < ...

  2. 移动端(H5)弹框组件--简单--实用--不依赖jQuery

    俗话说的好,框架是服务与大家的,包含的功能比较多,代码多.在现在追求速度的年代.应该根据自己的需求去封装自己所需要的组件. 下边就给大家介绍一下自己封装的一个小弹框组件,不依赖与jQuery,代码少, ...

  3. vantUI弹框组件 message文字,如何换行 ?

    vantUI弹框组件 message文字,如何换行 ? 代码如下: // 权限已到期 if(response.data.code == 6001){Toast.fail({duration: 1500 ...

  4. ElementUI弹框组件 messageBox 如何换行 ?

    ElementUI弹框组件 messageBox 如何换行 ? 参考博客:element this.$confirm确定框内容换行显示 效果图 · 截图示下: demo代码如下: const conf ...

  5. elemenUI - 弹框组件alert - 宽度设置? - 疑问篇

    举例如下:(elemenUI - 使用alert弹框组件),对比代码和效果图 官方组件+文档演示地址:点击查看官方文档 部分主要代码 · 如下: <el-col class="user ...

  6. VUE2.0增删改查附编辑添加model(弹框)组件共用

    为什么80%的码农都做不了架构师?>>> Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https: ...

  7. Element-UI源码学习——弹框组件

    手写弹框组件 文章目录 手写弹框组件 前言 一.Element-UI的弹框 二.如何自己手写? 前言 首先,分析一下Element-UI的对话框,点击,会弹出一个对话框.对话框由具体的弹框内容.关闭或 ...

  8. 微信小程序自定义picker弹框组件

    要有遥不可及的梦想,也要有脚踏实地的本事.----------- Grapefruit.Banuit Gang(香柚帮) 柚子写项目遇到了一个问题,就是微信小程序官方文档上面的弹框组件picker,它 ...

  9. Vue 自定义一个全局弹框组件

    前文:其实element ui有提供this.$mesage和this.$notify弹框组件可供使用,但是我们的ui设计的样式以及布局还是不完全一样的,为了达到100%的呈现效果,所以自己写了一个全 ...

最新文章

  1. 【编程5】斐波那契数列 + 递归+LeetCode50
  2. 【C语言】字节对齐问题(以32位系统为例)
  3. linux安装comfast网卡驱动,电脑如何通过usb共享手机网络 Linux安装wifi 无线网络 811AC usb网卡驱动...
  4. Servlet 处理多种请求应用
  5. 前端学习(3078):vue+element今日头条管理-分页总页码的实现
  6. 数据结构和算法,也就那么回事儿
  7. urban数据集_JUST技术:CK实现时序数据管理
  8. GIT命令行的一些基本操作
  9. Ros学习笔记(六)Launch启动文件
  10. 例2.9 找x - 九度教程第17题(查找)
  11. php tcpdf image,php采用tcpdf生成pdf支持中文,图片
  12. 2014年全国最新企业名录免费采集下载
  13. vba字典重复key_VBA字典技术整理
  14. 分形--朱利亚集合图形2
  15. 【Python爬虫案例学习10】基于Requests爬取拉勾网招聘信息,并保存至本地csv文件
  16. App开发者不再遵循苹果iOS设计惯例
  17. WDK学习笔记_基于区块链溯源系统的后端接口开发
  18. java线程(16)——死锁讲解,白雪公主与灰姑娘抢口红和镜子的案例
  19. Flink + 强化学习搭建实时推荐系统
  20. css中,用px自动转化为rem

热门文章

  1. 蓝桥杯真题:全球变暖
  2. MediaPlayer的生命周期和缓冲策略 (源码篇)
  3. 技术美术百人计划学习笔记(五)纹理
  4. 年薪近 30 万 | 西北工业大学生态环境学院叶发育生态研究组诚聘博士后
  5. 1 RRC 常用名词解释
  6. 数据解读:垃圾分类政策的传播特征和舆论发展趋势
  7. sun.Jersey 和 glassfish.Jersey
  8. influxdb源码解析-数据写入细节
  9. jmeter 聚合报告之jtl文件解析
  10. 博达3616系列OLT河北广电Qinq配置