如何在文件选择器中获取文件名反应?

use*_*513 8 javascript reactjs redux

你能告诉我如何在文件选择器中获取文件名吗?从file chooser 这里选择文件后,我试图在输入字段中设置值是我的代码 https://stackblitz.com/edit/react-d4kp1d?file=bulk.js 我试过这样

<input
        id="file_input_file"
        className="none"
        type="file"
        ref={inputRef }
        onChange={(e)=>{
          console.log('---')
          console.log(inputRef.current[0].files[0].name)

        }}
      />
Run Code Online (Sandbox Code Playgroud)

它给了我 undefined

Ray*_*ond 9

来自此处的良好文档和示例,解释了您正在尝试做什么。 https://reactjs.org/docs/uncontrolled-components.html#the-file-input-tag

代码笔: https ://codepen.io/anon/pen/LaXXJj

React.JS 包含要使用的特定文件 API。

以下示例显示了如何创建对 DOM 节点的引用以访问提交处理程序中的文件:

HTML

<input type="file" />
Run Code Online (Sandbox Code Playgroud)

React.JS

class FileInput extends React.Component {
  constructor(props) {
    super(props);
    this.handleSubmit = this.handleSubmit.bind(this);
    this.fileInput = React.createRef();
  }
  handleSubmit(event) {
    event.preventDefault();
    alert(
      `Selected file - ${
        this.fileInput.current.files[0].name
      }`
    );
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Upload file:
          <input type="file" ref={this.fileInput} />
        </label>
        <br />
        <button type="submit">Submit</button>
      </form>
    );
  }
}

ReactDOM.render(
  <FileInput />,
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)

警报文件名

alert(`Selected file - ${this.fileInput.current.files[0].name}`);
Run Code Online (Sandbox Code Playgroud)

引用:React.JS 文档 | 例子


Yus*_*bek 6

您可以在不使用的情况下获取选定的文件名 ref

  function handleChange(event) {
    console.log(`Selected file - ${event.target.files[0].name}`);
  }

  <input type="file" onChange={handleChange} />


Run Code Online (Sandbox Code Playgroud)