React全局浮窗、对话框
下面代码是组件源码:
import React, {Component} from 'react'
import {createPortal} from 'react-dom'
import styles from './modal.css'
export default class Modal extends Component {
constructor(props) {
super(props)
const doc = window.document
this.node = doc.createElement('div')
doc.body.appendChild(this.node)
this.state = {visible: this.props.visible}
}
componentWillReceiveProps(nextProps) {
if (this.props.visible !== nextProps.visible) {
this.setState({visible: nextProps.visible})
}
}
componentWillUnmount() {
if (this.node) {
window.document.body.removeChild(this.node)
}
}
render() {
return createPortal(
this.state.visible &&
<div className={styles.modal}>
<div className={styles.mask}/>
<div className={styles.content}>
</div>
</div>, this.node
)
}
}
下面是组件所用的CSS:
/*@import '../_css/config';*/
.modal {
position: fixed;
display: flex;
align-items: center; /*竖直居中 垂直居中*/
justify-content: center; /*水平居中*/
left:;
top:;
bottom:;
right:;
width: 100%;
height: 100%;
z-index:;
}
.mask {
background-color: rgba(0, 0, 0, .2);
position: fixed;
left:;
top:;
width: 100%;
height: 100%;
z-index:;
}
.content{
position: fixed;
width: 500px;
height: 300px;
background: #ffffff;
z-index:;
border-radius:5px;
}
下面是如何使用:
import Modal from "../dialog/modal.jsx";
class MenuBar extends React.Component {
constructor(props) {
super(props);
this.state = {
isShowing: false
}
}
render() {
return (<div className={styles.userP} onClick={this.cloudFileBtnClick}>
<Modal visible={this.state.isShowing}/>
</div>
)
}
React全局浮窗、对话框的更多相关文章
- Android 浮窗开发之窗口层级
很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...
- Qt 鼠标悬浮按钮上出现浮窗效果
操作: 鼠标hover于Btn(or other widget),在指定位置显示想要的widget(或其他控件窗口) 方法:重载以下几个api void paintEvent(QPaintEvent ...
- Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求 ...
- echart自定义浮窗 增加点击事件
一:情景 做一个柱状图,需要在柱状图显示lable,并且浮窗上每个条目可以被点击或者跳转. 我使用的做图插件是echarts,但是echart的浮窗是图片,而且不可以被点击,不能识别html,而且这个 ...
- react全局的公共组件-------弹框 (Alert)
最近研究react,发现写一个组件很容易,但是要写一个全局的好像有点麻烦.不能像VUE一样,直接在原型上面扩展,注册全局组件 下面实现一个弹框,只需要引入之后,直接调用方法即可,不需要写入组件 给出我 ...
- 【C#/WPF】用System.Timers.Timer计时器做浮窗广告
需求:鼠标静止一段时间后,显示浮窗广告. 思路:界面XAML写好一个专门显示浮窗广告的Canvas,先设为不可见Visibility=”Collapsed”,然后用System.Timers.Time ...
- 【WPF】使用Popup控件做浮窗/提示框
需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作. 效果如下图: 当鼠标移入左上角的[多选显示]框内,出现下面的浮窗(悬浮在原UI之上).当在浮窗外点击鼠标左键时,隐藏该浮窗. 由于该 ...
- 浮窗WindowManager view返回和Home按键事件监听
出于功能需求,需要在所有的view之上显示浮窗,于是需要在WindowManager的View上处理返回键的响应, mFloatingWindowView = layoutInflater.infla ...
- jQuery浮窗图片到页面中间的代码兼容移动端
jQuery浮窗图片到页面中间的代码兼容移动端 <!doctype html> <html> <head> <meta charset="utf-8 ...
随机推荐
- Qt中QListWidget的verticalScrollMode选项设置为ScrollPerPixel无效果的原因
设置为ScrollPerPixel无效果,根据Qt手册的描述,需要在设置一次setSingleStep()的值,才会生效
- 「NOIP2012」开车旅行
传送门 Luogu 解题思路 第一步预处理每个点后面的最近点和次近点,然后就是模拟题意. 但是如果就这么搞是 \(O(N^2)\) 的,不过可以过70分,考场上也已经比较可观了. 考虑优化. 预处理最 ...
- c++中比较好用的“黑科技”
切入正题,上黑科技 一.黑科技函数(常用的我就不写了,例如sort函数) 1.next_permutation(a+1,a+1+n) a[1-n]全排列 2.reverse(a+1,a+1+n) 将a ...
- 使用Hibernate+MySql+native SQL的BUG,以及解决办法
本来是mssql+hibernate+native SQL 应用的很和谐 但是到了把mssql换成mysql,就出了错(同样的数据结构和数据). 查询方法是: String sql = " ...
- eclipse Spring环境搭建 spring tool suite
1.期初用intellij社区版,发现收费版才能开发Java EE. 2.使用eclipse按照网上的教程,在help->eclipse marketplace中搜索sts安装spring工具套 ...
- js获取cookie提取用户名asp.net+html
JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的. 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一 ...
- php 键值数组搜索查询
php 键值数组查询 ,需要先将其转换为纯数组,然后才能用in_array 进行搜索. $arr_combos = [ ['id' => '1001', 'value' => 'zs' ...
- C++ Primer Plus 6 笔记(2)
第4章 1.求数组元素个数的一种方法:num=sizeof 数组名/sizeof (元素类型) 2.确定字符串所需的最短数组时,别忘了将结尾的'\0'计算在内.表面可以无,内存必须有. 3.'S'表示 ...
- numpy高级函数:where与extract
numpy高级函数:where与extract 1.numpy.where()函数,此函数返回数组中满足某个条件的元素的索引: import numpy as np x = np.array([[1, ...
- jmeter断言之响应code:200
因为Jmeter只要检测到网页的响应,就认为是Pass而并不管当前网页内容的正确性.在进行压力测试时,为了检查Web服务器返回的网页是否正确,我们可以设置断言,这些断言是验证网页上是否存在指定的Tex ...