这是官方阿里云上传的例子。
这是我代码中遇到的只监听一次上传状态的解答。
我在imgChange
方法中打印了fileList
有值,onChange
是undefined
,fileList
是文件上传的状态是肯定有值的,但是onChange
要在下面做判断为什么会是未定义呢?
因为这个未定义所以进不到if
判断中从而无法更新fileList
就导致了在onChange
方法中只监听到了上传的一次状态(status: "uploading"),之后的(status: "done")就监听不到了,请求各位大佬解惑!
另外也有点搞不懂为什么要从this.props
拿value
作为上传的fileList
绑定值,我在父组件中也没有定义这个参数啊?
附上我的相关代码:
class ShopUnitDialog extends Component {
/*省略部分代码*/
imgChange = ({fileList}) => {
const { onChange } = this.props
console.log('Aliyun OSS:', fileList, onChange) // fileList 有值,onChange 未定义
if (onChange) {
onChange([...fileList])
}
}
render() {
const { visible, value, ossData, onHide } = this.props
const { Item } = Form
const { getFieldDecorator } = this.props.form
const upload = {
name: 'file',
listType: 'picture',
fileList: value,
action: ossData.host,
data: this.getExtraData,
beforeUpload: this.beforeUpload,
onChange: this.imgChange,
}
return (
<Modal
title="详情"
okText='确认修改'
cancelText='取消'
width='860px'
visible={visible}
onOk={this.submit}
onCancel={onHide}
destroyOnClose
>
<Form>
<Item label='上传照片'>
{getFieldDecorator('upload_img')(
<Upload {...upload}>
<div>
<img src={UploadImg} alt='上传' width='104' height='78' />
</div>
</Upload>
)}
</Item>
</Form>
</Modal>
)
}
}
const ShopUnitD = Form.create({})(ShopUnitDialog);
export default ShopUnitD