Cómo forzar un elemento de DOM actualización antes que los demás o mostrar un indicador de espera en la Esbelta?

0

Pregunta

Tengo algunas casillas de verificación que cuando se hace clic le causa un montón de cambios en el DOM, y esta se congela la aplicación durante varios segundos. Me gustaría que las casillas de verificación actualizar en primer lugar, y/o mostrar un indicador de espera. He intentado varias cosas pero por alguna razón nada más en el DOM actualizará antes de la congelación. Los cambios realizados a una gran mesa, ya sea quitando o añadiendo todas las columnas, y actúa como si este tiene prioridad sobre cualquier otra cosa, porque cualquier otro intento de actualizar el DOM después de hacer clic en la casilla de verificación no ir a través de hasta que la tabla se ha completado la nueva representación. FWIW puedo usar la consola.registro para mostrar un mensaje antes de las actualizaciones de la tabla, y también después de que se completa por alguna razón.

dom svelte
2021-11-22 21:14:33
1

Mejor respuesta

0
import {tick} from "svelte";

let checked = false;
$: applyChanges(checked);

async function applyChanges() {
  messageVisible = true
  await tick()
  requestAnimationFrame(() => {
    requestAnimationFrame(() => {
      // do the stuff that causes a lots of dom updates
    })
  })
}

El await tick() se aplica la messageVisible cambios en el DOM.
El doble de la raf se espera para el navegador para dibujar el DOM actualizado.

2021-11-24 12:40:02

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................