antd引用<Upload>组件上传图片后再次打开modal清除缓存

18 篇文章 0 订阅
12 篇文章 0 订阅

在这里插入图片描述
情景展示:如上图所示:我的新增客户弹窗中引用了上传组件,当再次打开modal弹窗的时候,上一次上传的图片的缓存还在,这个问题问了问身边的大佬,最后解决了,
最简单的解决办法是:

给组件添加唯一的key值:

//在这里给key添加, Math.random()的得出来的是随机数
<div key={Math.random()}>  
    <Upload {...props} defaultFileList={this.state.fileList}>
       <Button>
         <Icon type="upload" onClick={this.upLoadImg}/> 上传
       </Button>
    </Upload>
</div>

Math.random()的得出来的是随机数,这样在每次打开弹窗的时候upload组件得到的key值都是唯一值
完整代码如下:包括组件的使用以及清除上一张上传的缓存

import {Upload} from 'antd';
export default class Customer extends React.Component{
this.state={
organCertUrl:"",//用来存放图片地址的对象
}
render(){
//------------------------------------定义上传图片的参数----------------------------------------
        const $this=this
        const props = {
            ref:"upload",
            action: '/safemgmt/api/custom/uploadOrganPic', //这块是将后台给你的接口地址需要复制到这一块
            listType: 'picture',
            className: 'upload-list-inline',
            onChange({ file, fileList }) {//file,和fileList是组件自带的参数,根据你上面赋值过去的接口给你返回的内容,file是个对象,fileList是个数组,其实file对象就相当于你用axios方法返回的response对象差不多啦~
                if (file.status === 'done') {
                  $this.setState({
                    organCertUrl:file.response.result,//前面是我的存放地址的对象
                  })
                }
             }
          }
       }
   }
return(
        <div>
       //..........中间的其他内容省略,下面是上传组件内容
          <div key={Math.random()}>
                <Upload {...props} defaultFileList={this.state.fileList}>
                <Button>
                    <Icon type="upload" onClick={this.upLoadImg}/> 上传
                </Button>
                </Upload>
            </div>
        </div>
)

作者:废柴码农
链接:https://www.jianshu.com/p/5c77b307f24c
来源:简书

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Antd的Table组件的onRow属性来监听行的双击事件,然后在事件处理函数中弹出一个Modal组件来显示该行的内容。 以下是一个示例代码: ```javascript import { Table, Modal } from 'antd'; const dataSource = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, { key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, ]; const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, ]; const MyTable = () => { const [visible, setVisible] = useState(false); const [selectedRow, setSelectedRow] = useState(null); const handleRowDoubleClick = (record) => { setSelectedRow(record); setVisible(true); }; const handleModalClose = () => { setVisible(false); }; return ( <> <Table dataSource={dataSource} columns={columns} onRow={(record) => ({ onDoubleClick: () => { handleRowDoubleClick(record); }, })} /> {selectedRow && ( <Modal visible={visible} onCancel={handleModalClose} onOk={handleModalClose} > <p>{selectedRow.name}</p> <p>{selectedRow.age}</p> <p>{selectedRow.address}</p> </Modal> )} </> ); }; export default MyTable; ``` 在这个示例中,我们使用了Antd的Table组件来渲染一个表格,然后监听了行的双击事件,并在事件处理函数中设置了当前选中的行,并显示了一个Modal组件来显示该行的内容。注意,我们使用了useState来保存当前选中的行和Modal组件的可见性状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值