尝试映射文件名列表时,为什么我得到对象不支持属性或方法“ map”

问题描述

使用此功能时出现错误:

 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>
                )
}

测试结果: enter image description here

,

我用过:

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

这是来自moonwave99提供的内容。

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...