为什么我在尝试映射文件名列表时得到 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
我在使用这个函数时遇到错误:
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