react 3 蒙层组件

蒙层效果

在这里插入图片描述

index.js


import Test from './compoments/common/Test' 


ReactDOM.render(
  <Test />,
  document.getElementById("root")
)


Test.js

测试组件用的

import React, { Component } from "react";
import Modal from "./Modal";

export default class Test extends Component {
  state = {
    showModal: false
  };

  showModal = () => {
    this.setState({
      showModal: true
    });
  };

  hideModal = () => {
    this.setState({
      showModal: false
    });
  };

  render() {
    return (
      <div>
        <img
          src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1600073546254&di=44bd363b9a5087374631dcadbacd5227&imgtype=0&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D2059882080%2C3277594818%26fm%3D214%26gp%3D0.jpg"
          alt="图片"
        />

        {this.state.showModal ? (
          <Modal onClose={this.hideModal}>
            <h1>蒙层内容</h1>
            <button onClick={this.hideModal}>关闭蒙层</button>
          </Modal>
        ) : null}

        <button onClick={this.showModal}>显示蒙层</button>
      </div>
    );
  }
}

modal.js

蒙层组件

import React from "react";
import "./index.css";

export default function Modal(props) {
  var defaultProps = {
    bg: "rgba(0,0,0,.5)"
  };

  var datas = Object.assign({}, defaultProps, props);

  return (
    <div
      onClick={e => {
        if(e.target.className === "modal" ){
            datas.onClose();
        }

      }}
      className="modal"
      style={{
        background: datas.bg
      }}
    >
      <div className="modal-center">{datas.children}</div>
    </div>
  );
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值