在使用antd的组件Upload时,希望单独写一个组件来实现上传文件功能,同时用在新建页面和编辑页面。
在新建页面直接使用即可,在编辑页面需要回显之前已经上传过的文件。
开始的时候想用 Upload 的 defaultFileList 属性,但是使用后发现,该属性只能接受最开始的赋值,并且赋值后不再更改,因为数据是异步父组件异步请求过来的,一开始传过来的值是 undefined,所以放弃了该方法。
最后使用 fileList 该属性受控,通过使用 useEffect 监听父组件传来的数据,当数据不为 undefined 时,赋值给 fileList 解决。
<Upload {...uploadProps} fileList={defaultFileList}> <Button icon={<UploadOutlined />}>选择文件</Button> </Upload>