Tidak dapat memilih fail yang dimuat naik untuk penandaan dalam React
P粉312631645
P粉312631645 2023-08-15 20:43:24
0
2
500
<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粉312631645
P粉312631645

membalas semua(2)
P粉523335026

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]);
P粉760675452

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);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan