通过 selectable={images.length < 3} 限制了选择图片数量的上限为3,但是设置了 multiple={true} 属性,用户可以一次性大于3张图片,这样就突破了图片上限。代码如下:
在onChange事件里面加校验
`
multiple
files={files}
onChange={this.pictureOnChange}
selectable={files.length < 10}
/>
pictureOnChange = (files: {}[], operationType: string) => {
let allowedFiles = files;
if (operationType === 'add') {
const fileTooBig = files.some((file: any) => file.file.size > 1024 * 1000 * 10);
if (fileTooBig) {
notification.error({
message: '上传图片大小不可超过10M',
});
allowedFiles = files.filter((file: any) => file.file.size <= 1024 * 1000 * 10);
}
if (allowedFiles.length > 10) {
notification.error({
message: '最多上传10张图片',
});
allowedFiles = allowedFiles.slice(0, 10);
}
}
this.setState({
files: allowedFiles,
});
}
`