react 定义json数据和点击触发弹窗

本文介绍如何在React中定义JSON数据,并通过点击事件触发弹窗。首先,利用async和await从接口获取JSON数据。接着,将数据引入到React组件中。在页面上,设置点击事件,当用户点击时,展示包含JSON数据的弹窗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义的json数据

 拿到你定义数据的接口在随便定义个名字  (我用async和await了)

在页面引入 

 使用代码(和点击弹出框)

import { Button, Dropdown, Menu, span, Modal, message } from 'antd';
import { connect, injectIntl, FormattedMessage } from 'umi';
import React, { Component, useState } from 'react';
import { outLogin111 } from '@/services/ant-design-pro/api';
import { lodash } from '@umijs/utils';
const msg = await outLogin111();
const { SubMenu } = Menu;
// const [isModalVisible, setIsModalVisible] = useState(false);
class ActiviteList extends Component {
    constructor(props) {
        super(props)
        this.state = {
            search: false,
            Adata: []
        };
    }
    add(ite) {
        let state = this.state
        let it = '名字:' + ite.name + '————' + '序号:' + ite.number + '————' + '路由:' + ite.routing
        this.setState({ ...state, search: true, Adata: it })
    }

    handleCancel() {
        message.success('您已确定!', 3)
        let t = this.state
        this.setState({ ...t, search: false })
    }
    cancel() {
        message.error("您取消了!", 3)
        let t = this.state
        this.setState({ ...t, search: false })
    }
    render() {
        return [(
            <div>
                {
                    msg.data.content.map((item) => {
                        // console.log(key);
                        return (
                            <Menu mode="inline" style={{ width: 256 }}>
                                <SubMenu onClick={() => {
                                    console.log(item.number);
                                }} title={item.name}>
                                    {
                                        item.TheChild.map((ite, index) => {
                                            // console.log(ite.name);
                                            return (
                                                <Menu.Item onClick={
                                                    this.add.bind(this, ite)
                                                } key={index}>{ite.name}</Menu.Item>
                                            )
                                        })
                                    }
                                </SubMenu>
                            </Menu>
                        )
                    })
                }
            </div>),

        (<Modal title="Basic Modal" centered='false' visible={this.state.search} onCancel={this.cancel.bind(this)} onOk={this.handleCancel.bind(this)}>
            <p>{this.state.Adata}</p>
        </Modal>)
        ]
    }
}
export default injectIntl(ActiviteList);

样式图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值