React + Antd Upload实现上传文件部分不可以删除(去掉删除按钮)

Antd Upload组件控制部分文件不可以删除

需求描述

甲方:我们在管理某条数据的时候可能从两个不同的地方上传文件。当我们从A地方上传文件以后,要在去B地方再上传一份文件(总共两份文件)要求在A地方上传的文件在B地方要显示,并加上特殊标记,并且不可以删除(这tm什么奇怪的需求!?)

如何实现?

尽管这个需求有点让人难受,但是还是需要做的,首先能想到的就是把不能删除的文件的删除按钮去掉就好了。然后要实现这个又需要你能控制Upload组件的fileList渲染,这怎么办?Antd官方已经替我们想到了!Upload组件有一个内置方法itemRender这个方法如何使用呢?看下官方文档的解释,方法中文解释是自定义上传列表项是一个函数,接收三个参数,我们要用到的是第一个参数(originNode)和 第二个参数(file);fileList有几个文件,这个函数就会被执行几次。如果你将originNode用一个div包裹起来再返回

<Upload itemRender={(originNode,file,currentFileList) => {
	return <div>{originNode}</div>
}}/>

你会发现跟原本的效果是一样的。
在这里插入图片描述

最终处理

这样的话我们就可以通过设置className来区分开是否要展示途中的删除按钮,并可以区分开是从哪里来的了,主要是通过第二个参数来判断,Upload回显需要fileList,官方demo有几个参数,我们可以自定义参数上传的时候给后台多传参数,标明上传位置,回显的时候只需要根据标志来加不同className就可以了,这里我们用一个flag来区别。

fileList = [
	            {
	                uid: '1',
	                name: 'xxx.png',
	                flag: true,
	                status: 'done',
	                url: 'http://www.baidu.com/xxx.png',
	            },
	            {
	                uid: '2',
	                name: 'yyy.png',
	                flag: false,
	                status: 'done',
	                url: 'http://www.baidu.com/yyy.png',
	            },
	        ];
	        //这样的话第二个参数file就是上面这些属性了。
itemRender={(originNode,file,currentFileList) => {
	return <div className={file.flag ? "hidden" : "show"}>
		{originNode}
		<div>{file.flag ? "A处上传不能删除" : "B处上传可以修改删除"}</div>
	</div>
}}

给外层加上className之后我们就可以根据全局样式来控制删除按钮显示与否,并且标明出处
在这里插入图片描述
在这里插入图片描述
从两张图片中可以很明显看出第一张图是不可以删除的,第二章是可以删除的,并且可以标明出处,至此问题解决,感谢阅览。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
<p><span xss=removed>Ant Design 是阿里开源的一套企业级的 UI 设计语言和 React 实现,使用 TypeScript 构建,提供完整的类型定义文件,自带提炼自企业级中后台产品的交互语言和视觉风格、开箱即用的高质量 React 组件与全链路开发和设计工具体系。</span></p><p> </p><p>特性:</p><p>提炼自企业级中后台产品的交互语言和视觉风格。</p><p>开箱即用的高质量 React 组件。</p><p>使用 TypeScript 开发,提供完整的类型定义文件。</p><p>全链路开发和设计工具体系。</p><p>数十个国际化语言支持。</p><p>深入每个细节的主题定制能力。</p><p> </p><p>兼容环境:</p><p>现代浏览器和 IE11(需要 polyfills)。</p><p>支持服务端渲染。</p><p>Electron</p><p> </p><p>Ant Design 更新日志:</p><p>v4.16.0</p><p>重构 Menu,支持键盘操作以及无障碍体验优化。</p><p>重新设计 Table 筛选和排序按钮的位置,使其归属列更明确。</p><p>Table</p><p>  Table.Summary 支持 sticky 模式。</p><p>  修复有固定列的 Table 内嵌 Table 的额外边距丢失的问题。</p><p>  Table 新增 expandable.fixed 属性用于设置扩展图标固定。</p><p>Upload</p><p>  Upload 组件 itemRender 添加 actions 调用参数。</p><p>  Upload 从拖动事件中删除 stopPropagation,并添加onDrop 回调。</p><p>Typography</p><p>  Typography 增加斜体字支持。</p><p>  修复 Typography 配置 ellipsis={{ suffix: 'xxx' }} 时换行闪动问题。</p><p>Collapse</p><p>  修复 Collapse 不指定 header 时箭头错位的问题。</p><p>  修复 Collapse 隐藏时设置 activeKey 时内容会消失的问题。</p><p>修复 Menu.SubMenu 的 icon 设置为第三方 icon 库时的样式问题。</p><p>修复 Descriptions 单独引入样式丢失的问题。</p><p>Radio.Group 支持 data-* 和 aria-* 属性。</p><p>Statistic.CountDown 组件增加 onChange 事件。</p><p>PageHeader 的 breadcrumb 中允许设置为组件。</p><p>ConfigProvider 支持动态设置 prefixCls。</p><p>修复 Anchor 指定 getCurrentAnchor 后无法触发 onChange 的问题。</p><p>修复 Notification useNotification 生成的通知框 className 作用范围不一致的问题。</p><p>修复 Tabs tabBarGutter 属性失效的问题。#30545</p><p>改写 Space 使用 flexGap 以代替 margin 样式以处理某些边界情况下的布局问题。</p><p>修复 Form 校验错误状态下 Input.Group 和 Cascader 边框颜色错误。</p><p>国际化</p><p>  补充罗马尼亚语国际化。</p><p>  补充荷兰语(荷兰 netherlands)及荷兰语(比利时 belgium)国际化。</p><p>TypeScript</p><p>  Space TypeScript 定义支持 HTMLAttribute 属性。</p>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值