如何从文件列表中删除特定文件?

时间:2021-05-31 07:13:54

标签: javascript reactjs

我的目标是从文件列表中删除一个特定的文件,但是当我想删除最后一个文件而不是所需的文件时。

代码如下:

 {this.state.myFiles.map(file => (
        <p key={file.name}>
          {file.name} ({file.size} bytes)
          <button
            className={"material-icons delete"}
            onClick={() => this.handleRemoveFile(file.name)}
          >
            Remove file
          </button>
        </p>))}

从文件列表中删除特定文件:

handleRemoveFile = (fileName) => {
const myFiles = [...this.state.myFiles];
 myFiles.splice(myFiles.indexOf(fileName), 1)
        this.setState({ myFiles })
}

我无法删除特定文件,它正在从文件列表中删除最后一个文件,谁能帮我从文件列表中删除特定文件?

谢谢!提前。

1 个答案:

答案 0 :(得分:1)

map 为您提供第二个参数,即数组的索引。

 {this.state.myFiles.map((file,index) => (
        <p key={file.name}>
          {file.name} ({file.size} bytes)
          <button
            className={"material-icons delete"}
            onClick={() => this.handleRemoveFile(index)}
          >
            Remove file
          </button>
        </p>))}

现在你可以使用这个索引来过滤文件

handleRemoveFile = (fileIndexToRemove) => {
   const updatedFiles = this.state.myFiles.filter((file, index) => index !== fileIndexToRemove)
   this.setState({ myFiles: updatedFiles  })
}