记录react+antd项目中使用Popconfirm及获取所点击行的数据

本文介绍了在React项目中结合Ant Design的Popconfirm组件,如何实现点击按钮弹出确认提示并根据用户确认操作改变按钮的disabled属性。通过在Table组件中设置每个数据行的isDisabled变量,并在Popconfirm的onConfirm回调中更新该变量,从而控制按钮的禁用状态。

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

一、首先使用点击Button弹出Popconfirm,再点击确定来控制disabled属性的true或者false,控制disabled属性通过控制一个变量就可以了。

1.首先看一下Popconfirm及Button的使用

<Popconfirm
title="是否确认?"
onConfirm={(e)=>{this.confirm(record)}} //点击确认的回调
onCancel={this.cancel}  //点击取消的回调
okText="确定"
cancelText="取消"
// disabled={data.isDisabled}
disabled={record.isDisabled}
>
	<Button disabled={record.isDisabled} type="primary" size='small' style={{marginRight:'10px'}} onClick={this.handleChange.bind(this,record)}>按钮</Button>
</Popconfirm>

2.通过循环遍历给每一条数据加一个变量(如果后端返回的数据有这个变量的话,请忽略此步骤)

for(let i=0;i<data.length;i++){
	data[i].isDisabled=false //给每条数据增加一个字段,并赋予初始值为false,data一般为从后端请求到的数据
}

3.当点击Button时,弹出Popconfirm,点击确认改变当前行isDisabled这个变量的值为true,我这里使用的antd中的Table,默认有三个属性(text, record, index),其中record为点击当前行的数据,所以将Button的disabled的属性通过record.isDisabled来控制(书写请看第一点中的代码)

    //点击Button弹出Popconfirm再点击确认时触发
    confirm=(record)=>{
        record.isDisabled=true  //这里仅改变了当前点击行的数据
        this.setState({data:[...this.state.data]}) //此处不用解构赋值也可更新数据
        message.success('确认');
    }

总结

我在这里踩到的坑主要是Popconfirm弹出点击确认后的回调函数的触发,一开始Popconfirm的onConfirm函数我是这样写的:

<Popconfirm onConfirm={this.confirm.bind(this,record)}>
	<Button>按钮</Button>
</Popconfirm>

然后我打印出来的e是当前行数据,而record是一个function。原因在于Popconfirm的onConfirm函数是一个回调函数,所以应该这样写:

<Popconfirm onConfirm={(e)=>{this.confirm(record)}}>
	<Button>按钮</Button>
</Popconfirm>

第一次写博客,主要是记录一下平时开发中被卡住的难点及解决方法,如有不对的地方,请大佬们指出~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值