Heim  >  Fragen und Antworten  >  Hauptteil

Hochgeladene Dateien können nicht zum Markieren in React ausgewählt werden

<p>Ich verwende React, um einen Datei-Upload zu erstellen. Ich möchte, dass die Statusvariable auf die hochgeladene Datei (.docx oder .pdf) gesetzt wird, sobald die Datei hochgeladen wird. Beim Aufruf von set state wird es jedoch als undefiniert angezeigt. </p> <pre class="brush:php;toolbar:false;">const [selectedFile, setSelectedFile] = useState(null) <Input type="file" onChange={handleImageUpload} Accept={config.type}/> const handleImageUpload = (event: { target: { files: any[] } }) => const file = event.target.files[0] if (Datei) { if (file.size > config?.fileSize) { setErrorMessage(config.fileSizeError) } else if (file?.name.endsWith(config.type)) { setSelectedFile(file) } anders { reader.readAsDataURL(Datei) } } }</pre> <p>Sobald <code>setSelectedFile(file)</code> auftritt, wird <code>selectedFile</code> Ist das ein konkreter Grund, warum es passiert ist? </p>
P粉312631645P粉312631645403 Tage vor403

Antworte allen(2)Ich werde antworten

  • P粉523335026

    P粉5233350262023-08-16 14:23:10

    这是因为当您在控制台中调用或记录它时,您的状态尚未更新。您可以在useEffect钩子中记录您的状态,以便在更新时查看它。以下是一个示例:

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

    Antwort
    0
  • P粉760675452

    P粉7606754522023-08-16 14:11:16

    我认为你的代码按预期工作,但是当你尝试调用它时,状态还没有被更新。

    根据React官方文档

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

    现在,这是我的猜测,但你可以尝试添加这段代码:

    setSelectedFile(file)
    
    setTimeout(() => {
        console.log(selectedFile); 
    }, 5000);

    Antwort
    0
  • StornierenAntwort