this.setState(prevState => ({
files: prevState.files.concat(files)
}));
this.setState({
files: [...this.state.files, ...array],
});
concat을 다음과 아래와 같은 방식으로도 쓸 수 있다.
private fileListToArray(files: FileList): File[] {
const array: File[] = [];
Array.prototype.forEach.call(files, (file) => {
if (files !== null) {
array.push(file);
}
});
return array;
}
filelist는 배열이 아니라 바로 foreach를 쓸수 없다.하지만 length와 숫자인덱스는 존재하기 때문에
Array.prototype으로 감싸주면 forEach사용가능하다.
for (var i = 0; i < files.length; i++) {
// get item
file = files.item(i);
//or
file = files[i];
alert(file.name);
}
파일리스트의 각 파일들에 접근방법
private onClickClearList(): void {
this.setState({ files: [] });
(document.getElementsByClassName(
"file-input",
)[0] as HTMLInputElement).value = "";
}
HTMLelement들은 Type assertions으로 타입을 설정해줘야 한다.