Impossible de sélectionner les fichiers téléchargés pour le balisage dans React
P粉312631645
2023-08-15 20:43:24
<p>J'utilise React pour créer un téléchargement de fichier. Je souhaite que la variable d'état soit définie sur le fichier téléchargé (.docx ou .pdf) dès que le fichier est téléchargé. Mais lors de l’appel de set state, il apparaît comme indéfini. </p>
<pre class="brush:php;toolbar:false;">const [selectedFile, setSelectedFile] = useState(null)
<Input type="file" onChange={handleImageUpload} accept={config.type}/>
const handleImageUpload = (événement : { cible : { fichiers : any[] } }) =>
fichier const = event.target.files[0]
si (fichier) {
if (file.size > config?.fileSize) {
setErrorMessage(config.fileSizeError)
} else if (file?.name.endsWith(config.type)) {
setSelectedFile(fichier)
} autre {
lecteur.readAsDataURL (fichier)
}
}
}</pré>
<p>Une fois que <code>setSelectedFile(file)</code> apparaît, <code>selectedFile</code> Est-ce une raison spécifique pour laquelle cela s'est produit ? </p>
En effet, lorsque vous l'appelez ou le connectez à la console, votre statut n'a pas encore été mis à jour. Vous pouvez enregistrer votre statut dans un
useEffect
hook pour l'afficher une fois mis à jour. Voici un exemple :Je pense que votre code fonctionne comme prévu, mais lorsque vous essayez de l'appeler, l'état n'a pas encore été mis à jour.
Selon la Documentation officielle de React :
Maintenant, c'est mon hypothèse, mais vous pouvez essayer d'ajouter ce code :