使用antd的Modal.method展示异步请求数据详情,再次封装成函数api直接调用

使用antd写项目多了,经常会有相似的场景——使用Modal弹窗,请求异步数据后显示详情。一般都会写个弹窗详情组件,并且用visible和loading参数去维护,写多了这样的业务需求,总会觉得烦琐。还好antd3以上提供了Modal.update方法,我们可以自己封装一个简单的请求数据查看详情的方法。

封装showModal方法

import { Modal, Spin } from 'antd';
import request from 'UTILS/request';
/*
*  用于简单modal弹窗,并且异步请求数据
*/
export default function showModal({
    reqData={}
    contentRender,
    ...rest
}) {
    let _modal = Modal.info({
        content: <Spin />,
        onOk: () => {
            _modal = null;
        },
        ...rest
    });

    request(reqData).then(res => {
        if (_modal) {
            _modal.update({
                content: contentRender(res),
            });
        }
    })
}

使用showModal方法

function Index() {
	function showDetail() {
		showModal({
			reqData: {
				url: '/getList',
				body: {
					page: 1,
				}
			},
			contentRender: res => {
				if (res.success) {
					return (
						<Table 
							columns={[{ title: '标题', dataIndex: 'title' }]}
							dataSource={res.data}
						/>
					);
				} else {
					return <p>暂无数据</p>;
				}
			}
		})
	}

	return (
		<div>
			<Button onClick={showDetail}>查看详情</Button>
		</div>
	);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值