Reputation: 180
I created Drag and Drop functionality and I need to save in state few files.
const [uploadFiles, setUploadFiles] = useState<any[]>([]);
const onDropHandler = async (e:React.DragEvent<HTMLDivElement>) => {
e.preventDefault();
const files = Object.values(e.dataTransfer.files);
setUploadFiles({ ...files, files });
};
And I receive this error
Argument of type '{ files: File[]; length: number; toString(): string; toLocaleString(): string; pop(): File | undefined; push(...items: File[]): number; concat(...items: ConcatArray<File>[]): File[]; concat(...items: (File | ConcatArray<...>)[]): File[]; ... 27 more ...; [Symbol.unscopables](): { ...; }; }' is not assignable to parameter of type 'SetStateAction<any[]>'.
If I set new State , everything works. But so I remove previous state...
setUploadFiles(files);
Upvotes: 0
Views: 47
Reputation: 117
let tempState =[...uploadFiles]
tempState.push(files)
setUploadFiles(tempState)
This way you can just push the next file to the next index of the state array. No previous file will be lost.
Upvotes: 1