Impossible de sélectionner les fichiers téléchargés pour le balisage dans React
P粉312631645
P粉312631645 2023-08-15 20:43:24
0
2
510
<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>
P粉312631645
P粉312631645

répondre à tous(2)
P粉523335026

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 useEffecthook pour l'afficher une fois mis à jour. Voici un exemple :

useEffect(() => {
    console.log("文件 >> ", selectedFile);
  }, [selectedFile]);
P粉760675452

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 :

set函数只会更新下一次渲染的状态变量。
如果在调用set函数之后读取状态变量,你仍然会得到在调用之前屏幕上的旧值。

Maintenant, c'est mon hypothèse, mais vous pouvez essayer d'ajouter ce code :

setSelectedFile(file)

setTimeout(() => {
    console.log(selectedFile); 
}, 5000);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal