Итерация файлов из файлового ввода - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь перебрать все файлы из файла ввода и следую за примером. Я получаю значения из элемента управления загрузкой, но не могу повторить его. Это потому что это asyn c, или в браузере есть какая-то защита? Я могу видеть массив в консоли.

const { useState } = React;

function App() {
  const [files, setFiles] = useState([]);

  const selectedFilesChanged = e => {
    var filesArr = Array.prototype.slice.call(e.target.files);
    console.log(filesArr);
    setFiles(files);
    console.log(filesArr);
    // console.log(e.target.files);
    //alert(e);
  };

  return (
    <div className="App">
      <input type="file" multiple onChange={selectedFilesChanged} />
      <div>{files.length}</div>
      <div>
        {files.map((file, index) => (
          <div key={index}>dfsdf</div>
        ))}
      </div>
    </div>
  );
}

ReactDOM.render(<App />, document.body);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>

1 Ответ

1 голос
/ 02 мая 2020

files - пустой массив.

const [files, setFiles] = useState([]);

const selectedFilesChanged = e => {
    var filesArr = Array.prototype.slice.call(e.target.files);
    setFiles(files);
};

Используйте filesArr вместо.

setFiles(filesArr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...