使用 React 制作一个模态框

模态框是一个常见的组件,下面让我们使用 React 实现一个现代化的模态框吧。

组件设计

模态框想必大家都很熟悉,是工作中常用的组件,可以让我们填写或展示一些信息而不必打开一个新页面。在开始编码之前,我们先来了解一个 React 模态框组件应该如何设计。

React 是一个状态(数据)驱动的前端框架,一个模态框最重要的状态就是打开和关闭,visible,当 visible 为 true 时,模态框打开,反之亦然。

由于 React 所提倡的是一种声明式,组件化的开发体验,每个组件都是 状态 => 界面 的映射,所以,我们把 visible 做为模态框组件的一个 prop,通过传入 prop 来控制

模态框的显示和隐藏,同时该组件还接受一个 onClose 的 prop,用来关闭模态框。

一个完整的模态框还需要标题和内容,因此,我们还需要一个 header 的 prop 来传递模态框的 header,并把 Modal 组件的 children 作为模态框的内容 content。最后,我们的模态框 Modal 的调用方式是这样的:

import React, { useEffect, useState } from 'react';

import Modal from './components/modal';

function App() {

const [modalVisible, setModalVisible] = useState(true);

const openModal = function() { setModalVisible(true) };

const closeModal = function() { setModalVisible(false) };

return (

<>

Click

来个模态kuang_使用 React 制作一个模态框相关推荐

  1. 使用vue+textarea的属性maxlength制作一个文本框字数限制

    使用vue加textarea的属性maxlength制作一个文本框字数限制 1.body部分 <div id="app"><div class="tex ...

  2. 用css3制作一个搜索框效果

    搜索框的形式有多种多样,今天试着用css3做了一个搜索框, html代码如下: <form class="form-wrapper">   <input type ...

  3. D3.js(v3)+react 制作 一个带坐标与比例尺的散点图 (V3版本)

    上一章做了柱形图,https://www.cnblogs.com/littleSpill/p/10835041.html   这一章做散点图. 散点图(Scatter Chart),通常是一横一竖两个 ...

  4. react制作一个照片墙小demo

    点击下面的 指示灯 会变大 当前的图片会居于屏幕中间 再按一下会变成黄色 同时当前指示的照片会翻转到背面 是一个综合知识的考察 用到了css3的2d和3d转换 // App.js import Rea ...

  5. 使用react制作一个app—— 仿美团app

    使用到的plugins react-router fetch better-scroll swiper 做得有点粗糙,图片是直接截图下来的~如果介意建议看下一个使用脚手架仿的,这个就不改了,哈哈. g ...

  6. java模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog

    我有一个模式设置对话框是一个JDialog.在这个设置窗口中,我将一些组件(包括一个按钮)放置到另一个模式设置对话框,该对话框也是一个JDialog.我使他们成为JDialogs,因为这是我知道进行模 ...

  7. java jdialog 模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog

    不确定你有什么问题,但这里是一个例子,你可以有多个模态对话框: import java.awt.BorderLayout; import java.awt.Window; import java.aw ...

  8. css制作tips提示框,气泡框,制作三角形

    有时候我们的页面会需要这样的一些提示框或者叫气泡框,运用css,我们可以实现这样的效果. 为了实现上面的效果,我们首先要理解如何制作三角形. 当我们给一个DIV不同颜色的边框的时候,我们可以得到下面的 ...

  9. flask 检测post是否为空_用Flask和Vue制作一个单页应用(五)

    使用POST向后台发送数据 Flask app修改 可以直接使用现有的路由处理函数来接收前端发来的数据,server/app.py中的all_res()修改如下: @app.route('/resou ...

最新文章

  1. 宝德服务器安装系统6,简洁强大的内部结构
  2. 使用读写锁解决读者-写者问题
  3. vim 居中光标所在行(转载)
  4. .mod.c 是什么文件
  5. 算法与数据结构(三) 二叉树的遍历及其线索化(Swift版)
  6. Flutter 动态饼状图 让你的APP中无聊的统计图动起来 挻舒适的感觉瞬间提升一个档次 -深夜创作
  7. Bootstrap使用 .dropdown-menu 类创建下拉菜单
  8. 科技长廊声光电计算机,科技展示长廊 孩子探索乐园
  9. 数据结构|-二叉查找树(二叉搜索树)的链式存储结构的实现
  10. php快速排序分割两部分,php四大算法|冒泡排序|快速排序|二分查找
  11. 时间序列分析导论书摘:时间预处理-时序变换
  12. 图解通信原理与案例分析-27: 卫星通信系统及关键技术
  13. 常用的JScript代码整理
  14. ..以前似乎用作函数或命令,与其在此处作为变量名称的用法冲突?
  15. 崩坏3服务器修改水晶数量,崩坏3一个月能攒多少水晶_单月水晶数量分析
  16. 1. Pycharm新建项目
  17. 视频(音频)播放组件——西瓜播放器
  18. 用wifi实现细粒度的人体感知——Person-in-WiFi: Fine-grained Person Perception using WiFi
  19. MATLAB 学习心得(3) 定积分和双重积分,三重积分的求法
  20. discuz插件开发及页面跳转教程

热门文章

  1. python:2019新年贺词的词云制作以及基于TF-IDF的关键词提取
  2. 分子动力学软件-VMD(win版)
  3. 梨花院落溶溶月,柳絮池塘淡淡风-- 我心中的七剑与梁羽生
  4. PHP+jQuery+Flash完美演示翻盘抽奖
  5. 模仿微信朋友圈 图片浏览 js javascript 支持图片预览,滑动切换,双指缩放,图片缓存
  6. Python查找文件夹中含有指定关键字的文件
  7. 互信息(Mutual Information)
  8. 双系统重装Ubuntu 16.04
  9. ​《2020科技趋势报告》重磅发布,AI 和中国,成为未来科技世界关键词
  10. 法拉科机器人接头_【发那科】图解FANUC机器人I/O信号板