我使用下面的函数将附件从<input type="file" multiple />添加到父对象的状态。
这很好用,直到用户想要添加另一个附件,新附件覆盖现有附件,我如何才能将新附件添加到现有附件数组中?
handleAddAttachments = fileList => {
this.props.handleChange('attachments', Array.from(fileList));
};我试过了,但似乎不起作用。
handleAddAttachments = fileList => {
const { attachments } = this.props.ticket;
this.props.handleChange('attachments', [...attachments, fileList]);
};父handleChange函数:
makeHandleChange = (pageName, change) => {
this.setState({
ticket: { ...this.state.ticket, [pageName]: change },
});
};发布于 2019-05-28 16:39:50
在您的第二个版本中,您缺少Array.from()部件。来自fileInput的更改不直接是数组,因此扩展运算符不起作用。
这应该能起到作用:
handleAddAttachments = fileList => {
const { attachments } = this.props.ticket;
this.props.handleChange('attachments', [...attachments, ...Array.from(fileList)]);
};有关它为什么不是数组的更多信息,可以在这里找到一些信息:Why isn't the FileList object an array?
谢谢@sigmus,我将缺失的跨页添加到了Array.from()中
https://stackoverflow.com/questions/56337966
复制相似问题