• 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 使用

    /*
     * @Author: shihaixia
     * @Date: 2022-02-24 09:58:02
     * @Description: 
     */
    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>
        );
      }
    }
    
    
  • 相关阅读:
    spring集成quartz
    ScheduledExecutorService
    中国方言输入法Rime入门
    TinyOS实例介绍
    公式输入较好的参考
    USRP IQ信号分析
    法语学习(1)--入门资料推荐
    Python小技巧
    编码知识
    jaspersoft studio colunm header and detail ,detail中显示多列数据
  • 原文地址:https://www.cnblogs.com/cupid10/p/15958063.html
Copyright © 2020-2023  润新知