返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React Hook实现对话框组件
  • 347
分享到

React Hook实现对话框组件

2024-04-02 19:04:59 347人浏览 泡泡鱼
摘要

React Hook实现对话框组件,供大家参考,具体内容如下 准备 思路:对话框组件是有需要的时候希望它能够弹出来,不需要的时候在页面上是没有任何显示的,这就意味着需要一个状态,在父

React Hook实现对话框组件,供大家参考,具体内容如下

准备

  • 思路:对话框组件是有需要的时候希望它能够弹出来,不需要的时候在页面上是没有任何显示的,这就意味着需要一个状态,在父组件点击按钮或其他的时候能够更改+ 它并显示,同时子组件(对话框组件)点击关闭的时候也需要更改这个状态。

      进阶:为对话框组件背景添加蒙皮,当对话框内容需要滚动时限制浏览器页面的滚动。

  • React Hook 主要用到了 useState,useContext,useContext 主要用于将父组件的 setStatus 传递给子组件以至于它可以更新状态。

附上 Dialog 和 DialogMain组件代码,其中DialogMain 为父组件,使用时只需将其挂载至 App.js

代码

DialogMain 父组件代码

import React from "react";
import Dialog from "./dialog";
//初始化 Context
export const StatusContext = React.createContext();
const DialogTest = () => {
    //设置状态控制对话框的打开与关闭
    const [status, setStatus] = React.useState(false);
    //条件渲染,符合条件返回 Dialog 组件否则返回 null
    function GetDialog() {
        if (status) return <Dialog />;
        else return null;
    }
    //打开函数
    function openDialog() {
        //打开时禁止浏览器外面的滚动,注释掉这行鼠标在对话框外面时可以滚动浏览器界面
        document.body.style.overflow = "hidden";
        setStatus(true);
    }
    return (
        <div>
            {}
            <button onClick={openDialog}>打开对话框</button>
            {}
            <StatusContext.Provider value={{ setStatus }}>
                <GetDialog />
            </StatusContext.Provider>
        </div>
    );
};

export default DialogTest;

Dialog子组件代码

import React from "react";
import { StatusContext } from "./dialogMain";

const Dialog = (props) => {
    //利用解构赋值将 setState 从 useContext分离出来
    const { setStatus } = React.useContext(StatusContext);
    //关闭时更改 Status 状态为 false
    function uninstallDialog() {
        setStatus(false);
        //关闭时重新将浏览器界面设置为滚动或其他
        document.body.style.overflow = "scroll";
    }
    // 点击蒙层本身时关闭对话框,点击对话框的内容时不关闭
    function handleClick(event) {
        if (event.target === event.currentTarget) {
            //调用关闭的方法
            uninstallDialog();
        }
    }
    return (
        // 为整个组件添加CSS 样式并让其置于顶层,同时对话框意外的地方添加模糊效果
        <div
            style={{
                position: " fixed",
                top: 0,
                left: 0,
                right: 0,
                bottom: 0,
                background: "rgba(0, 0, 0, 0.3)",
                zIndex: " 99",
            }}
            onClick={handleClick}
        >
            {}
            <div
                style={{
                    position: "absolute",
                    left: "50%",
                    top: "50%",
                    overflow: "auto",
                    transfORM: "translate(-50%, -50%)",
                    padding: "30px 30px",
                    width: " 200px",
                    height: " 200px",
                    border: "2px solid yellow",
                    borderRadius: "8px",
                    background: "yellow",
                }}
            >
                {}
                <button onClick={uninstallDialog}>关闭</button>
                对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框
                对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框对话框
                对话框 对话框 对话框 对话框 对话框 对话框 对话框 对话框 对话框
            </div>
        </div>
    );
};
export default Dialog;

App.js代码

import "./App.css";
import DialogMain from "./component/dialogTest/dialogMain";
function App() {
    return (
        <div className="App">
            <div style={{ height: "2000px" }}>
                <DialogMain />
            </div>
        </div>
    );
}

export default App;

运行界面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: React Hook实现对话框组件

本文链接: https://lsjlt.com/news/165785.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • React Hook实现对话框组件
    React Hook实现对话框组件,供大家参考,具体内容如下 准备 思路:对话框组件是有需要的时候希望它能够弹出来,不需要的时候在页面上是没有任何显示的,这就意味着需要一个状态,在父...
    99+
    2024-04-02
  • React项目中hook实现展示对话框功能
    目录思路:使用全局状态管理所有对话框尝试设计一个API去做对话框的全局管理实现:创建NiceModal组件和相关API处理对话框的返回值总结React中使用对话框并不容易,主要因为:...
    99+
    2024-04-02
  • React项目中hook怎么实现展示对话框功能
    这篇文章主要介绍“React项目中hook怎么实现展示对话框功能”,在日常操作中,相信很多人在React项目中hook怎么实现展示对话框功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”React项目中hoo...
    99+
    2023-06-30
  • React如何创建对话框组件
    本篇内容主要讲解“React如何创建对话框组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React如何创建对话框组件”吧!原生的前端体系创建一个对话框可是再简单不过了。但是如果放到组件化思想...
    99+
    2023-06-30
  • React创建对话框组件的方法实例
    原生的前端体系创建一个对话框可是再简单不过了。但是如果放到组件化思想下的react体系中,想要制作一个属于自己的对话框还是有一定的麻烦的。主要遇到的问题有两个:一是如何在子组件中创建...
    99+
    2024-04-02
  • React怎么实现一个倒计时hook组件
    这篇“React怎么实现一个倒计时hook组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React怎么实现一个倒计时ho...
    99+
    2023-07-05
  • Android AlertDialog实现分享对话框/退出对话框/下载对话框
    一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框;双击返回按钮,弹窗退出对话框;下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,...
    99+
    2022-06-06
    alertdialog Android
  • React实现一个倒计时hook组件实战示例
    目录前言思路实现总结前言 本篇文章主要实现一个无样式的倒计时 hook 组件,通常不同地方的倒计时样式都不同,但倒计时的逻辑基本是都是一样的,因此可以抽离成一个工具方法或者一个 ...
    99+
    2023-02-23
    React倒计时hook组件 React hook
  • PyQt5如何实现文件对话框
    本篇内容主要讲解“PyQt5如何实现文件对话框”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PyQt5如何实现文件对话框”吧!文件对话框文件对话框(QFileDialog)用于浏览文件并获取文件...
    99+
    2023-07-05
  • Vue3编写气泡对话框组件
    Vue3气泡对话框组件,使用 TypeScript枚举限定类型,样式用到了 TailwindCSS 组件代码 <template>   <div class="mt...
    99+
    2024-04-02
  • React Hook 四种组件优化总结
    目录前言组件抽取memo 优化组件React.memo 语法useCallback 优化组件useCallback 作用useMemo 优化useMemo 语法useCallback...
    99+
    2024-04-02
  • css如何实现对话框
    这篇文章主要介绍了css如何实现对话框,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 css实现对话框的方法:首...
    99+
    2024-04-02
  • AndroidStudio实现单选对话框
    本文实例为大家分享了Android Studio实现单选对话框的具体代码,供大家参考,具体内容如下 上效果图 activity_main.xml <xml version="...
    99+
    2024-04-02
  • JavaScript实现消息对话框
    本文实例为大家分享了JavaScript实现消息对话框的具体代码,供大家参考,具体内容如下 JavaScript弹起对话框的形式有以下三种: 1.只是提醒,不能对脚本产生任何改变;2...
    99+
    2024-04-02
  • angular2如何封装material2对话框组件
    这篇文章主要介绍angular2如何封装material2对话框组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 说明angular-material2自身文档不详,控件不齐,...
    99+
    2024-04-02
  • HTML怎么实现文件下载对话框
    本篇内容介绍了“HTML怎么实现文件下载对话框”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件下载对话框我们先在当前目录下创建 foo.t...
    99+
    2023-06-08
  • Android悬浮对话框(即点即关对话框)实现代码
    Activity是Android系统的4个应用程序组件之一。通过传统方法显示的Activity都是充满整个屏幕,也就是全屏的Activity。事实上,Activity不仅可以全...
    99+
    2022-06-06
    Android
  • Android中创建对话框(确定取消对话框、单选对话框、多选对话框)实例代码
    Android中可以创建三种对话框、确定取消对话框、单选对话框、多选对话框 android中的确定取消对话框演示示例 Android中使用单选对话框的演示案例 and...
    99+
    2022-06-06
    Android
  • Vue对话框组件使用方法详解
    本文实例为大家分享了Vue对话框组件的使用,供大家参考,具体内容如下 效果如下图所示:(整体样式模仿ant-design-vue Modal样式,同时阴影覆盖浏览器窗口) ①创建组...
    99+
    2024-04-02
  • C#中WPF颜色对话框控件的实现
    在 C# WPF开发中颜色对话框控件(ColorDialog)用于对界面中的背景、文字…(拥有颜色属性的所有控件)设置颜色,例如设置标签控件的背景色。 颜色对话框的运行...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作