DouyinFE / semi-design

🚀A modern, comprehensive, flexible design system and React UI library. 🎨 Provide more than 3000+ Design Tokens, easy to build your design system. Make Semi Design to Any Design. 🧑🏻‍💻 Design to Code in one click
https://semi.design
Other
8.43k stars 711 forks source link

[Upload] 校验大小/格式后能否不设置值 #1756

Closed xmsz-stu closed 1 year ago

xmsz-stu commented 1 year ago

Which Component Need Enhancement 期望新增功能的组件

What does the proposed API look like 期望支持的API

触发大小/格式限制后,用户自己控制要不要设置值

Feature Description 功能描述

比如上传图片,用户上传的大小超过了限制,这个时候还是会把值设置进去,然后显示 image 但大部分情况下,如果文件不合法就不应该再把值设置进去而是保留空值

所以能否支持当触发限制的时候,不把不合法的文件路径设置进去

Additional information 补充说明

还有另外一个情况,我尝试

<UploadSingleField
                  field="member_card.background_pic_url"
                  minSize={1024}
                  onSizeError={(file) => {
                    Toast.error(`${file.name} 文件大小不正确`);
                    setTimeout(() => {
                      formApi.setValue('member_card.background_pic_url', undefined);
                    }, 0);
                  }}

如果我不设置定时则没有效果,必须要定时才行,但是设置了定时以后,就会出现闪一下的情况,也不是很友好

pointhalo commented 1 year ago
  1. 校验不合法的 file 需要存在于 fileList 中。这是为了让用户可以感知到具体的原因,是出于交互考虑。这个设定不会更改。(实际上在 semi v0.x 版本的upload里,是非法 file 直接消失不显示的,但是实际业务反馈并不好,所以在 v 1.x之后就改成了现在这样的交互)。
  2. 如果你不想显示非法文件,可以自己使用 受控 fileList ,自己删除对应的项。
xmsz-stu commented 1 year ago

好吧,因为出错了用户还得再点击一次重新上传,有些用户甚至会忽略,在提交时候还得再判断然后提示

还有我补充说明里需要定时才能覆盖值的情况有没有其他好的办法推荐