如何解决尝试映射文件名列表时,为什么我得到对象不支持属性或方法“ 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>
)
}
,
我用过:
// @ts-ignore
const fileListToArr = Array.from(resultFile);
这是来自moonwave99提供的内容。
原因是文件列表不是数组,因此它被认为是对象,因此需要转换。我唯一想要的是文件名,因此我使用了上面的文件。我还不得不强制忽略typeScript,因为它不喜欢.from
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。