解决antd design的Modal组件弹出卡顿的问题

代码:

import React from ‘react‘
import ReactDOM from ‘react-dom‘
import Axios from "axios";
import copy from ‘copy-to-clipboard‘
import { Input, Button, Modal, message, Icon } from ‘antd‘
import ‘../static/css/input.css‘
import ‘../static/css/button.css‘
import ‘../static/css/modal.css‘
import ‘../static/css/message.css‘
import ‘../static/css/icon.css‘
import ‘../static/css/decrypt.css‘

const { TextArea } = Input;

export default class Decrypt extends React.Component {
    state = {
        link: ‘‘,
        secretKey: ‘‘,
        content: ‘‘
    }

    render() {
        return (
            <div id="decrypt-container" className=‘decrypt-container‘>
                <table className=‘decry-table‘>
                    <tbody>
                    <tr>
                        <td><Input placeholder="Please Input the Link" onChange={e => this.linkInputChangehandler(e)} /></td>
                        <td><Button type="primary" onClick={this.buttonClickHandler}>Confirm</Button></td>
                    </tr>
                    </tbody>
                </table>
            </div>
        )
    }

    linkInputChangehandler = e => {
        const link = e.target.value
        this.setState({ link })
    }

    buttonClickHandler = () => {
        Modal.confirm({
            title: ‘Resource extraction‘,
            icon: <Icon type="info-circle" />,
            content: <Input placeholder="Please Input the Secret Key" ref={input => this.contentSecretKeyInput = input} />,
            okText: ‘Confirm‘,
            cancelText: ‘Cannel‘,
            onOk: this.confirm
        })
    }

    confirm = () => {
        const secretKey = this.contentSecretKeyInput.state.value
        let { link } = this.state
        link = link.substring(link.lastIndexOf(‘/‘) + 1)
        // console.log(`secretKey=${secretKey}, link=${link}`)

        Axios.get(‘/api/encryption?id=‘ + link + ‘&key=‘ + secretKey).then(res => {
            if (res.data.code === 0) {
                let content = res.data.data.content
                this.setState({ content })
                //message.success(‘Successful‘);
                ReactDOM.render(
                    <div>
                        <span className=‘content-info‘>The content you extract is:</span>
                        <TextArea rows={8} value={this.state.content} />
                        <Button className=‘copy-button‘ type="primary" onClick={this.buttonCopyHandler}>Copy</Button>
                    </div>,
                    document.getElementById(‘decrypt-container‘),
                );
            } else {
                // error message info
                if (res.data.data && res.data.data.incr)
                    message.error(`${res.data.message}, only ${res.data.data.incr} input opportunities left`);
                else
                    message.error(res.data.message);
            }
        })
    }

    buttonCopyHandler = () => {
        // Get the value of the `value` attribute of the <Input> component
        copy(this.state.content)
    }

}

解决方案1:

  将导入antd组件css样式的代码删除,改为;

import "antd/dist/antd.css"
// import ‘../static/css/input.css‘
// import ‘../static/css/button.css‘
// import ‘../static/css/modal.css‘
// import ‘../static/css/message.css‘
// import ‘../static/css/icon.css‘
import ‘../static/css/decrypt.css‘

  但是这样不能实现按需导入,加载了全部的 antd 组件的样式(gzipped 后一共大约 60kb)。

解决方案1:按需导入antd组件css样式

  参考 https://ant.design/docs/react/use-with-create-react-app-cn

原文地址:https://www.cnblogs.com/xy-ouyang/p/12191354.html

时间: 2024-10-14 08:50:12

解决antd design的Modal组件弹出卡顿的问题的相关文章

美团_ccListView选中Item的颜色修改及解决登陆后升级通知再次弹出的bug

实现,在listView Xml中设置 android:listSelector="@color/green" 2. 解决登陆后升级通知再次弹出的bug ①: MineFragment跳转到Login界面使用StartActivityForResult,而不是StartActivity: @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != n

解决IOS safari在input focus弹出输入法时不支持position fixed的问题

该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position:fixed的支持不是很好(在IOS5之前甚至还不支持position:fixed).我遇到的其中一个问题就是,在iOS6+环境下,input focus弹出输入法的时候,设置了position fixed的input框浮在页面上了,而不是吸附在软键盘上.效果如图(图片来源于网上): 而Androi

解决PL/SQL Dev连接Oracle弹出空白提示框

第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 没办法,只能自己研究,经过大概一天时间吧,还是搞好了,写个总结. 出现这种问题,解决方法大概有这几种: 1.权限不够,导致弹出空吧提示框.(直接上链接) http://jingyan.baidu.com/article/066074d6760959c3c21cb0d6.html 就PL/SQL图标上点右键---属性---兼容性--管理员

Modal视图弹出方式

Modal方式弹出页面: 1.Modal方式弹出页面在iOS中有很广泛的应用,比如UIImagePickerController等,Modal方式主要有以下几个作用: 检查登陆信息,Modal出登陆页面,让用户确认登陆等 解锁页面,比如应用中有密码解锁或者手势解锁的需求,可以Modal方式弹出解锁页面 临时显示一些数据,比如查看列表信息,在查看完毕后可以dismiss页面 其他使用场合 2.Modal的弹出风格 typedef enum { UIModalPresentationFullScre

解决Firefox浏览器每次打开都弹出导入向导的问题

每次打开Firefox浏览器都会弹出导入向导这个页面,只有这个页面关闭后,Firefox界面才会打开. 解决办法: C:\Users\{用户名}\AppData\Roaming\Mozilla\Firefox\profiles.ini 把profiles.ini文件中IsRelative=1修改为IsRelative=0 报错: in `connect_until_stable': unable to obtain stable firefox connection in 60 seconds

解决安卓手机上软键盘弹出挤压背景的问题

demo: // 解决本页面软键盘弹窗背景挤压的问题 var clientHeight = document.documentElement.clientHeight || document.body.clientHeight; $(window).on('resize', function () { var nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight; if (cli

解决python在windows上运行弹出cmd窗口(dos窗口)

运行python程序的时候会在背景显示一个cmd,要想不显示其实很简单(虽然是我找了1个小时...才了解的基本知识) 方法1:pythonw xxx.py 方法2:将.py改成.pyw (这个其实就是使用脚本解析程序pythonw.exe) 原文: 1) Try changing the file extension to .pyw. Double-clicking a .pyw will use pythonw.exe instead of python.exe. python.exe运行的时

组件--弹出层

<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>Examples</title><meta name="description" content=&qu

解决input[type=file]打开时慢、卡顿问题

为什么在input标签类型为file上传文件时在标签中设置属性 accpet="image/*",打开本地文件夹的速度特别慢? 经过测试发现,在mac里面safari.Firefox.Chrome(opera不知道为啥老闪退)都没有卡顿问题 在windows里面,Firefox不卡顿,只有Chrome卡顿. 于是我决定先去掉accpet试试……果然就没有了卡顿的问题.那么本包在试试accpet="image/jpg"果然也不卡卡的了!!看来问题的所在就是"