FileUpload Templated: Inconsistency in getFiles() and totalSize calculation during onSelect and onRemove events
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- next.js, react
- Ambito
- frontend
Direzione di ricerca
Inizia dal flusso degli eventi onSelect e onRemove del componente FileUpload e dal comportamento di getFiles() quando si usa headerTemplate o itemTemplate. Riproduci il problema con React 18.3.1 e PrimeReact 10.9.7, quindi verifica che getFiles() rifletta sincronicamente l’elenco di file aggiornato e che i calcoli di totalSize non richiedano più setTimeout.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When utilizing the FileUpload component with custom templates (headerTemplate, itemTemplate), managing the total file size state (totalSize) externally becomes inconsistent. The onSelect and onRemove events appear to fire asynchronously relative to the component's internal file list update.
Reproducer
No response
System Information
"react": "18.3.1",
"react-dom": "18.3.1",
"primereact": "^10.9.7",
Steps to reproduce the behavior
Steps to Reproduce:
Create a FileUpload component using the App Router in Next.js (client-side) with headerTemplate to display an external totalSize state managed by useState.
Implement onSelect and onRemove handlers that attempt to use fileUploadRef.current.getFiles() to accurately calculate the current total size.
Select a single file (File A). The displayed total size is incorrect (often 0 or delayed).
Select a second file (File B). The total size calculation often incorrectly duplicates the size of File A plus the size of File B (e.g., A + A + B), or only shows the size of File A.
Deleting File B sometimes synchronizes the size correctly, sometimes no
Expected behavior
fileUploadRef.current.getFiles() should reliably and synchronously reflect the updated list of files immediately after the onSelect or onRemove events have fired, allowing external state management to remain synchronized without requiring workarounds.
Current Workaround:
The only reliable way to achieve synchronization is by using setTimeout(syncTotalSize, 0) within the onSelect and onRemove handlers to defer the state update to the next event loop tick.
- Lingua principale
- CSS
- Stelle
- 8.3k
- Fork
- 1.2k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di primefaces/primereact
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
primefaces/primereact#8552 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
primefaces/primereact#8550 ·
-
Row checkbox selection tick is invisible in Landing Page Theme sectionForse già presa @Prakash1185 l’ha presa 153 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
primefaces/primereact#8545 ·
-
Dependency conflict between jspdf v4 and jspdf-autotable during npm installForse già presa @Kamran92 l’ha presa 168 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
primefaces/primereact#8537 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
primefaces/primereact#8551 ·
Tutte le issue di primefaces/primereact
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
linagora/twake-calendar-frontend#1924 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
anomalyco/opencode#61221 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
area: core complexity: trivial impact: low
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
ueberdosis/tiptap#8666 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
longbridge/nsh#804 ·
I maintainer di solito rispondono entro 1 giorno