为什么我在尝试映射文件名列表时得到 Object doesn't support 属性 or method 'map'

Why am i getting Object doesn't support property or method 'map' when trying to map a list of filenames

我在使用这个函数时遇到错误:

 private _addFile = (event) => {
    //let resultFile = document.getElementById('file');
    let resultFile = event.target.files;
    console.log(resultFile);
    let fileInfos = [];
    for (var i = 0; i < resultFile.length; i++) {
      var fileName = resultFile[i].name;
      console.log(fileName + 'fileName');
      var file = resultFile[i];
      var reader = new FileReader();
      reader.onload = ((file) => {
         return (e) => {
              //Push the converted file into array
               fileInfos.push({
                  "name": file.name,
                  "content": e.target.result
                  });
                };
         })(file);
      reader.readAsArrayBuffer(file);
    }
    this.setState({
      fileInfos,
      fileArray: resultFile,  
    }, () => {
        console.log(this.state.fileArray);
    });
    
  }

和这个 JSX:

             {this.state.fileArray ? this.state.fileArray.map((item, i) => <li key={i}>{item}</li>) : null }

我仍然是 ReactJS 的初学者,所以解释总是有帮助的。 我读过一些类似的帖子,并尝试遵循但它们也会导致同样的错误。

尝试使用:

{
                    Object.keys(this.state.resultFile).map(key => 
                     <li value={key}>{this.state.resultFile[key].name}</li>
                )
}

测试结果:

我用过:

 // @ts-ignore
    const fileListToArr = Array.from(resultFile);

这是从moonwave99给出的衍生出来的。

原因是,文件列表不是数组,它被视为对象,因此需要转换。我唯一想要的是文件名,所以我使用了上面的。我还不得不强制忽略 typeScript,因为它不喜欢 .from