ant-design Upload上传组件使用 编辑功能图片回显

简介: ant-design Upload上传组件使用 编辑功能图片回显

当我们使用 ant-design Upload上传组件进行编辑功能回显时,不能使用使用 action上传,自己手续一个自定义上传因此我们要这样设置。

<Upload                                                                                
    listType="picture-card"                                                                        
    fileList={fileLists[name]}                                                                                    
     // maxCount={1} 
     //上传文件之前的钩子                                                                                                                                                   
     beforeUpload={(e) => { handleChanges(e, name) }}                                                                                                                                                
     ={(e) => { handleRemoves(e, name) }}                                                                    > 
     <div>                                                                                
         <PlusOutlined />                                                                            
         <div style={{ marginTop: 8 }}>Upload</div>                                                                           
     </div>                                                                    
</Upload>

因为我们要做的是编辑回显获取的数据形式为[{ url: 图片路径, uid: 图片标识 }]导致方式图片显示数组fileLists导致自动上传无法返回路径,使用beforeUpload事件不使用onChange是因为,onChange做图片上传会和onRemove事件冲突,当删除图片时两个事件会一起执行所以我们使用beforeUpload避开事件冲突。

编辑回显图片上传

// 编辑图片上传事件
    const handleChanges = (file, name) => {
        let arr = fileLists
        console.log(file);
        let param = new FormData();
        param.append("file", file);
        axios({
            url: "/api/common/upload",
            method: "post",
            data: param
        }).then(res => {
            console.log(res.data);
            if (res.data.code == 1) {
                //uid的作用防止上传相同图片key值报错和方便onRemove删除
                arr[name].push({ url: '域名' + res.data.url, uid: file.uid });
            }
            //要使用[...arr]这样的格式存放数组,否则新增图片数据无法再页面及时显示
            setFileLists([...arr]);
            console.log(arr);
        });
    };

编辑回显图片删除

const handleRemoves = (file, name) => {
        console.log(file);
        //获取被删除图片路径和uid
        let arr = fileLists;
        //筛选图片路径数组中相同uid的元素获取其下标
        let index = arr[name].findIndex((val) => {
            return val.uid == file.uid
        })
        //删除对应下标元素
        arr[name].splice(index, 1)
        console.log(arr);
        //更新数组
        setFileLists([...arr])
        return false;
    }

这样可以根据uid删除对应的图片路径,不会和.filter删除一样因为路径相同而多删除图片

相关文章
|
前端开发
react-antd中使用Upload实现图片裁剪-上传-预览的功能
使用react中antd实现图片的上传裁剪和预览,记录一下实现过程,希望能对大家有帮助
1512 0
react-antd中使用Upload实现图片裁剪-上传-预览的功能
|
存储 缓存 前端开发
Antd Upload + React-Cropper 实现图片自定义区域剪裁并上传功能
通过Upload组件结合react-Cropper实现图片的裁剪上传组件封装,剖析antd-img-crop源码实现的逻辑,对自己封装的组件进行进一步优化,改造!
5751 0
Antd Upload + React-Cropper 实现图片自定义区域剪裁并上传功能
|
存储 JavaScript API
vue3+ant design vue 自定义文件上传和自定义上传进度条
1.关键点是Upload组件中customRequest的API,它能通过覆盖默认的上传行为,可以自定义自己的上传实现(具体可看官方文档); 2.通过在Upload组件中绑定progress实现。 下面是详细代码
3927 0
uniapp-picker选择省市区效果demo(整理)
uniapp-picker选择省市区效果demo(整理)
|
资源调度 JavaScript 前端开发
vue2_二次封装a-upload组件,自定义上传预览
vue2_二次封装a-upload组件,自定义上传预览
1552 0
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
1794 3
React DnD:实现拖拽功能的终极方案?
antd table合并行或者列(动态添加合并行、列)
在Ant Design的Table组件中实现行或列的合并,通过动态计算数据源中的`rowSpan`或`colSpan`属性来控制,支持对特定字段进行行或列合并,包括多选框列的合并处理。
2470 3
antd table合并行或者列(动态添加合并行、列)
|
Shell 开发工具 git
git怎么处理文件夹名称大小写重命名问题
git怎么处理文件夹名称大小写重命名问题
903 0
|
存储
ant-design Upload上传组件使用 action上传
ant-design Upload上传组件使用 action上传
840 0
|
JavaScript API 索引
js中的reduce()方法 讲解 和实现
`reduce()` 方法对数组元素依次应用一个回调函数,将结果累计并最终返回单一值。语法为 `reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)`。参数包括累计器(初次为初始值或首元素)、当前元素值、索引及数组自身。此方法需返回值供下一轮迭代使用。常见应用场景包括计算数组总和与平均值、统计元素频率、过滤与转换数组内容及去除重复项等。例如,可通过 `reduce()` 快速计算 `[1, 2, 3, 4, 5]` 的总和或对对象属性值求和。此外,还可自定义实现 `reduce()` 方法
7599 1

热门文章

最新文章