如何解决在将useState挂钩中的Object推入数组的同时创建唯一的数组
我声明的反应状态如下
const [selectedFiles,setselectedFiles] = useState([]);
在以下功能中使用它们
function handleAcceptedFiles(files) {
files.map((file) =>
Object.assign(file,{
preview: URL.createObjectURL(file),formattedSize: file.size,})
);
selectedFiles.length === 0 ? setselectedFiles(files) : setselectedFiles(oldFiles => [...oldFiles,...files])
}
这时我们如何才能仅添加新文件并删除重复文件
setselectedFiles(oldFiles => [...oldFiles,...files])
解决方法
您可以使用键值对filePreview-file创建一个查找对象,并从中获取sum(sum_) filter (where created_at-installed_at =3 ) as "Day4",sum(sum_) filter (where created_at-installed_at =4 ) as "Day5",...
...
...
values
,
也许这就是您需要的?
function handleAcceptedFiles(files) {
// Map over the current selection of files,generate required fields
const newFiles = files.map(file => {
return Object.assign(file,{
preview: URL.createObjectURL(file),formattedSize: file.size,});
});
// Find non-duplicate entries in previously selected files
const nonDupFiles = selectedFiles.filter(oldFile => {
const index = newFiles.findIndex(newFile => newFile.preview === oldFile.preview);
return index === -1; // index -1 => file wasn't found => non duplicate
});
// Concat of new files and non-dup files is what we need in state
setselectedFiles(newFiles.concat(nonDupFiles));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。