react封装Dialog弹框的方法
短信预约 -IT技能 免费直播动态提醒
本文实例为大家分享了react封装Dialog弹框的具体代码,供大家参考,具体内容如下
Dialog.js
import React, { Component, Children } from "react";
import { createPortal } from "react-dom";
import "../static/css/Dialog.scss"
export default class Dialog extends Component {
constructor(props) {
super(props);
const doc = window.document;
this.node = doc.createElement("div");
doc.body.appendChild(this.node);
}
componentWillUnmount() {
window.document.body.removeChild(this.node);
}
render() {
const { children, hideDialog, hide } = this.props;
let tem = hide ? "hidden" : "";
console.log("hide", tem);
return createPortal(
<div className="dialogBox" style={{ visibility: tem }}>
<div className="dialog">
{children}
<button onClick={hideDialog}>close</button>
</div>
</div>,
this.node
);
}
}
Dialog.scss
.dialogBox {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
width: 100%;
height: 100%;
background: rgba($color: #000000, $alpha: 0.5);
display: flex;
justify-content: center;
align-items: center;
.dialog{
width: 50%;
height: 50%;
text-align: center;;
background-color: #fff;
}
}
DialogPage.js 使用
import React, { Component } from "react";
import { Button } from "antd";
import Dialog from "../components/Dialog";
export default class DialogPage extends Component {
constructor(props) {
super(props);
this.state = {
showDialog: false,
};
}
handleShowDialog = () => {
this.setState({
showDialog: !this.state.showDialog,
});
};
render() {
const { showDialog } = this.state;
return (
<div className="dialogPage">
<h1>DialogPage</h1>
<Button onClick={this.handleShowDialog}>切换</Button>
{showDialog && (
<Dialog hideDialog={this.handleShowDialog} hide={false}>
<h3>标题</h3>
<p>这是一个弹窗</p>
</Dialog>
)}
</div>
);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341