Я пытаюсь перебрать все файлы из файла ввода и следую за примером. Я получаю значения из элемента управления загрузкой, но не могу повторить его. Это потому что это 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>
files - пустой массив.
files
const [files, setFiles] = useState([]); const selectedFilesChanged = e => { var filesArr = Array.prototype.slice.call(e.target.files); setFiles(files); };
Используйте filesArr вместо.
filesArr
setFiles(filesArr);