Rumah  >  Soal Jawab  >  teks badan

Tidak dapat memilih fail yang dimuat naik untuk penandaan dalam React

<p>Saya menggunakan React untuk membuat muat naik fail. Saya mahu pembolehubah status ditetapkan kepada fail yang dimuat naik (.docx atau .pdf) sebaik sahaja fail dimuat naik. Tetapi apabila memanggil keadaan set, ia muncul sebagai tidak ditentukan. </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[] } }) => fail const = event.target.files[0] jika (fail) { if (file.size > config?.fileSize) { setErrorMessage(config.fileSizeError) } else if (file?.name.endsWith(config.type)) { setSelectedFile(fail) } lain { reader.readAsDataURL(fail) } } }</pre> <p>Setelah <kod>setSelectedFile(fail)</kod> ia menunjukkan <kod>selectedFile</kod> Adakah ini sebab khusus mengapa ia berlaku? </p>
P粉312631645P粉312631645453 hari yang lalu455

membalas semua(2)saya akan balas

  • P粉523335026

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

    Ini kerana apabila anda memanggil atau log masuk ke konsol, status anda masih belum dikemas kini. Anda boleh merakam status anda dalam useEffectcangkuk untuk melihatnya apabila dikemas kini. Berikut adalah contoh:

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

    balas
    0
  • P粉760675452

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

    Saya rasa kod anda berfungsi seperti yang diharapkan, tetapi apabila anda cuba memanggilnya, keadaan belum dikemas kini lagi.

    Menurut React dokumentasi rasmi:

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

    Sekarang, ini adalah tekaan saya, tetapi anda boleh cuba menambah kod ini:

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

    balas
    0
  • Batalbalas