返回顶部
首页 > 资讯 > 前端开发 > html >react中的modal怎么用
  • 161
分享到

react中的modal怎么用

2024-04-02 19:04:59 161人浏览 安东尼
摘要

这篇文章主要介绍了React中的modal怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react中的modal怎么用文章都会有所收获,下面我们一起来看看吧。

这篇文章主要介绍了React中的modal怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react中的modal怎么用文章都会有所收获,下面我们一起来看看吧。

在react中,modal用于覆盖包含根视图的原生视图,可以实现遮罩的效果,语法为“<Modal visible={this.state.visible} {...props}></Modal>”或者“Modal.confirm()”。

教程操作环境:windows10系统、react17.0.1版、Dell G3电脑。

react中modal的用法是什么

Modal 简述

模态对话框。需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 Modal 在当前页面正中打开一个浮层,承载相应的操作。

另外当需要一个简洁的确认框询问用户时,可以使用 Modal.confirm() 等语法糖方法。

核心功能点提取

根据 Antd Modal 文档提供的接口来实现 Modal.

核心实现

Modal 组件的特殊在于它有两种用法:

  1. 通常用法:<Modal visible={this.state.visible} {...props}></Modal>

  2. 调用静态方法: Modal.confirm({ title: '取消后,已编辑的脚本信息将不会保存,请确认是否取消。', okText: '确认取消', cancelText: '暂不取消', onOk() { me.props.onCancel(); } })

我的想法是这两种调用都在internalModal.tsx中统一维护

react中的modal怎么用
顺着这个思路, 对于 Modal.tsx
1)不会维护 render 方法, 而是在 componentDidMount / componentDidUpdate 生命周期中调用 internalModal.tsx 完成渲染
2)Modal.tsx 中维护相关静态方法 confirm, error, info 等。

// Modal.tsxexport default class Modal extends React.Component<ModalProps, {}> {
    static propTypes = {
		...
    };

    static confirm(content) {
        const modal = new InternalModal();
        const props = {
            ...Modal.defaultProps,
            title: '提示',
            children: content,
            cancelButton: true,
            okButton: true,
            okButtonText: '确定',
            cancelButtonText: '取消',
            closable: false,
            visible: true,
            onOk() {
                modal.destroy();
            },
            onCancel() {
                modal.destroy();
            }
        };
        modal.render(props);
    }

    private modal;
    constructor(props: ModalProps) {
        super(props);
        this.modal = new InternalModal();
    }

    componentWillUnmount() {
        this.modal.destory();
        this.modal = null;
    }

    componentDidMount() {
        this.modal.render(this.props);
    }

    componentDidUpdate() {
        this.modal.render(this.props);
    }

    componentWillReceiveProps(nextProps) {
        if (nextProps.visible) {
            this.modal.show();
        } else {
            this.modal.hide();
        }
    }

    render() {
        return null;
    }}

接下来就是最关键的 internalModal.tsx :

export default class InternalModal {

    private props;

    render(props) {
        const {...} = this.props;

        this.createContainer();
        const icon = require('../../assets/icon/info.svg') as string;

        const modalDOM = ...;

        ReactDOM.render({modalDOM}, modalContainer,
	        () => {
	            if (visible) {
	                this.show();
	            }
	        });
    }

	...

    createContainer() {
        if (!modalContainer) {
            modalContainer = document.createElement('p');
            document.body.appendChild(modalContainer);
        }
    }

    destroy() {
        if (modalContainer) {
            ReactDOM.unmountComponentAtnode(modalContainer);
        }
    }

    show() {
        if (modalContainer) {
            modalContainer.style.display = 'block';
        }
    }

    hide() {
        if (modalContainer) {
            modalContainer.style.display = 'none';
        }
    }}

从代码可以发现 internalModal 的实现要点:

  1. 作为一个普通 js 类 (并没有继承 React.Component) ,提供一个 render 方法,render 中通过ReactDOM.render(element, container[, callback])渲染弹出窗口

  2. 在 document 上创建一个 p container 乘放 Modal,通过 CSS display 控制显示/隐藏,其实也可以使用 React Portal.

  3. 可以用一些第三方库比如react-transition-group 来增强 Modal 显示/隐藏的动画效果。

关于“react中的modal怎么用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“react中的modal怎么用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网html频道。

--结束END--

本文标题: react中的modal怎么用

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

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

猜你喜欢
  • react中的modal怎么用
    这篇文章主要介绍了react中的modal怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react中的modal怎么用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • react中modal不生效怎么办
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react中modal不生效怎么办?react中使用ant组件库的modal弹窗报错解决在react项目中使用ant-design库中的modal弹窗控制...
    99+
    2023-05-14
    modal React
  • React-Native组件之Modal怎么用
    这篇文章将为大家详细讲解有关React-Native组件之Modal怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Modal组件可以用来覆盖包含React Nati...
    99+
    2024-04-02
  • react modal 怎么实现关闭事件
    本教程操作环境:Windows10系统、react18版、Dell G3电脑。react modal 怎么实现关闭事件?react点击其他地方关闭Modal框原理:很简单,就是监听浏览器onclick事件的target,判断点击事件,如果不...
    99+
    2023-05-14
    React
  • react中modal不生效如何解决
    这篇文章主要讲解了“react中modal不生效如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react中modal不生效如何解决”吧!react中modal不生效的解决办法:1、将...
    99+
    2023-07-04
  • React Native Modal 的封装与使用实例详解
    目录背景Android FullScreenModal 的封装使用Android 原生实现全屏 Dialog封装给 RN 进行相关的调用Android 原生部分实现JS 部分实现使用...
    99+
    2024-04-02
  • React Native如何使用Modal自定义分享界面
    小编给大家分享一下React Native如何使用Modal自定义分享界面,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在很多App中都会涉及到分享,React Native提供了Moda...
    99+
    2024-04-02
  • react中的forceupdate怎么用
    本文小编为大家详细介绍“react中的forceupdate怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“react中的forceupdate怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • react中的canvas怎么用
    这篇“react中的canvas怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“rea...
    99+
    2024-04-02
  • react中的context怎么用
    这篇“react中的context怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“re...
    99+
    2024-04-02
  • react中的switch怎么用
    这篇文章主要介绍“react中的switch怎么用”,在日常操作中,相信很多人在react中的switch怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react中的s...
    99+
    2024-04-02
  • select2在bootstrap modal中不能正常使用怎么办
    小编给大家分享一下select2在bootstrap modal中不能正常使用怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • react中的key怎么使用
    这篇“react中的key怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“react...
    99+
    2024-04-02
  • React中的ref怎么使用
    这篇文章主要介绍“React中的ref怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的ref怎么使用”文章能帮助大家解决问题。1. ref 的理解与使用对于 Ref 的理解,要从...
    99+
    2023-07-04
  • react中的useMemo怎么使用
    今天小编给大家分享一下react中的useMemo怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概念react 中是...
    99+
    2023-07-04
  • react中immutable.js怎么用
    这篇文章主要介绍react中immutable.js怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、对于react的来说,如果父组件有多个子组件想象一下这种场景,一个父组件下...
    99+
    2024-04-02
  • react中swipe怎么用
    这篇文章主要介绍了react中swipe怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 react swi...
    99+
    2024-04-02
  • React中的Refs属性怎么用
    这篇“React中的Refs属性怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中的Refs属性怎么用”文章吧...
    99+
    2023-06-29
  • React中的useEffectuseLayoutEffect到底怎么用
    目录前言介绍使用空依赖非空依赖实现销毁操作两者区别前言 使用缘由: 在函数中当请求数据时并且给state赋值会导致整个函数刷新, 从而导致死循环的进行数据请求, 所以这时候可以用到u...
    99+
    2023-02-06
    React useEffect React useLayoutEffect
  • React中的setState/useState怎么使用
    这篇文章主要介绍“React中的setState/useState怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的setState/useState怎么使用”文章能帮助大家解决问...
    99+
    2023-07-05
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作