• react中使用Modal.confirm数据不更新的问题解决


    在使用Modal.confirm的时候今天发现了个疑惑的问题,为什么我明明从新set了数据而页面视图没有变化,查了一下官方文档找到了答案,解决了这个问题,特意在这里留下痕迹。

    import { Button, Col, Form, Input, Modal, Radio, Row, Select, Space, Spin } from 'antd'
    let modal = null
    export default function (props) {
        const [typeStr, settypeStr] = useState('')
        const [lookIPorAS, setlookIPorAS] = useState('ip')
        const returnModalFun = () => {
            return <Row className="m-b-10-px">
                <Col span={16} key={lookIPorAS}>
                    <Radio.Group onChange={onchangeFun} value={lookIPorAS}>
                        <Radio value="ip">IP</Radio>
                        <Radio value="as">AS</Radio>
                    </Radio.Group>
                </Col>
            </Row>
        }
        
       const onchangeFun = (e) => {
            setlookIPorAS(e.target.value)
        }
        
       const detailsFun = (item) => {
            setItemObj(item)
            const { type } = item
            if (type === '滥用') {
                // settypeStr('abuseString')
                modal = Modal.confirm({
                    title: '请选择要查看的类型',
                    content: returnModalFun(),
                    onOk: () => {
    
                    },
                })
            } else if (type === 'aaa') {
                settypeStr('type1')
                setVisible(true)
    
            } else if (type === 'bbb') {
                settypeStr('type2')
                setVisible(true)
            }
        }
        return (
       	null
        )
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    上述的代码是有问题的,据说会发生我上述的问题,数据并不能更新。
    首先看一下官方的解释:
    在这里插入图片描述
    我们只需要在生成Modal的时候接收返回的实例对象
    然后调用update方法即可更新数据

        useEffect(() => {
            modal && modal.update({
                title: '请选择要查看的类型',
                content:returnModalFun() ,
            });
        }, [lookIPorAS])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    全部代码:

    ```javascript
    import { Button, Col, Form, Input, Modal, Radio, Row, Select, Space, Spin } from 'antd'
    let modal = null
    export default function (props) {
        const [typeStr, settypeStr] = useState('')
        const [lookIPorAS, setlookIPorAS] = useState('ip')
        
        useEffect(() => {
            modal && modal.update({
                title: '请选择要查看的类型',
                content:returnModalFun() ,
            });
        }, [lookIPorAS])
        
        const returnModalFun = () => {
            return <Row className="m-b-10-px">
                <Col span={16} key={lookIPorAS}>
                    <Radio.Group onChange={onchangeFun} value={lookIPorAS}>
                        <Radio value="ip">IP</Radio>
                        <Radio value="as">AS</Radio>
                    </Radio.Group>
                </Col>
            </Row>
        }
        
       const onchangeFun = (e) => {
            setlookIPorAS(e.target.value)
        }
        
        const detailsFun = (item) => {
            const { type } = item
            if (type === '滥用') {
                // settypeStr('abuseString')
                modal = Modal.confirm({
                    title: '请选择要查看的类型',
                    content: returnModalFun(),
                    onOk: () => {
    
                    },
                })
            } else if (type === 'aaa') {
                settypeStr('type1')
                setVisible(true)
    
            } else if (type === 'bbb') {
                settypeStr('type2')
                setVisible(true)
            }
        }
        return (
       	null
        )
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
  • 相关阅读:
    选择排序(学习笔记)
    如何获取obs视频帧的二进制数据
    CDR插件开发之Addon插件007 - Addon插件简介和案例演示
    JAVA餐饮掌上设备点餐系统计算机毕业设计Mybatis+系统+数据库+调试部署
    NPM相关
    教育管理系统功能点
    【JDBC实战】水果库存系统 [设计阶段]
    AVProVideo☀️四、视频播放案例
    【VSCode 插件商城无法搜索到插件的解决方法】
    SOLIDWORKS参数化设计之格式转换 慧德敏学
  • 原文地址:https://blog.csdn.net/qq_43291759/article/details/132692019