Checkpoint: Résolution du problème de latence d'affichage avec double requestAnimationFrame : cette technique garantit que le navigateur peint l'animation à l'écran avant de bloquer sur le fetch. Le premier requestAnimationFrame permet à React de mettre à jour l'état, le second force le navigateur à afficher visuellement l'animation avant de démarrer l'upload. Déployé sur le VPS de production.
This commit is contained in:
@@ -196,14 +196,14 @@ function UploadAttestationDialog({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Forcer le rendu synchrone de l'interface AVANT de démarrer l'upload
|
// Afficher immédiatement l'état de chargement
|
||||||
flushSync(() => {
|
|
||||||
setUploading(true);
|
setUploading(true);
|
||||||
setUploadProgress(0);
|
setUploadProgress(0);
|
||||||
});
|
|
||||||
|
|
||||||
// Démarrer l'upload de manière asynchrone
|
// Utiliser requestAnimationFrame pour garantir que le navigateur
|
||||||
(async () => {
|
// affiche l'animation AVANT de bloquer sur le fetch
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
requestAnimationFrame(async () => {
|
||||||
try {
|
try {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('file', file);
|
formData.append('file', file);
|
||||||
@@ -242,7 +242,8 @@ function UploadAttestationDialog({
|
|||||||
} finally {
|
} finally {
|
||||||
setUploading(false);
|
setUploading(false);
|
||||||
}
|
}
|
||||||
})(); // Fermer et exécuter la fonction async
|
}); // Fermer requestAnimationFrame interne
|
||||||
|
}); // Fermer requestAnimationFrame externe
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
2
todo.md
2
todo.md
@@ -1476,3 +1476,5 @@
|
|||||||
- [x] Corriger la latence d'affichage du message d'upload (forcer le rendu avant traitement)
|
- [x] Corriger la latence d'affichage du message d'upload (forcer le rendu avant traitement)
|
||||||
|
|
||||||
- [x] Restructurer le flux d'upload avec useEffect pour affichage immédiat
|
- [x] Restructurer le flux d'upload avec useEffect pour affichage immédiat
|
||||||
|
|
||||||
|
- [x] Corriger la latence avec requestAnimationFrame pour affichage avant fetch bloquant
|
||||||
|
|||||||
Reference in New Issue
Block a user