文件列表类型react typescript



interface IVideos {

lastModified: number,

name: string,

path: string,

size: number,

type: string,

webkitRelativePath: string

}

const [videos, setVideos] = useState<IVideos[] | null>([]);

<input type="file" onChange={(event) => setVideos(event.target.files)} />

我在";setVideos((":

Type 'FileList' is not assignable to type 'SetStateAction<IVideos[] | null>'.

我的界面不正确吗?

是否需要创建IVideos接口?CCD_ 12和CCD_。

例如,这里有一个对我有效的替代方案:

const [videos, setVideos] = useState<File[]>([]);
<input type="file" onChange={(event) => setVideos(Array.from(event.target.files ?? []))} />

我所做的更改:

  • IVideos[]更改为File[],因为它已经预定义好了,现在不必维护这个接口
  • 删除了| null,这样您就知道它始终是一个数组
  • 使用Array.from(event.target.files将FileList强制转换为数组
  • 使用event.target.files ?? []是因为Array.from不能接受null,所以如果event.target.files返回null,我们只需将其替换为空数组

这有帮助吗?还是需要使用IVideos接口?

最新更新