Comment faire pour forcer un élément du DOM pour mettre à jour avant les autres ou de montrer une attente indicateur Svelte?

0

La question

J'ai des cases à cocher qui lorsqu'il est cliqué va causer beaucoup de changements dans les DOM, et cela se fige à l'application pendant plusieurs secondes. J'aimerais que les cases à cocher mettre à jour en premier, et/ou d'affichage d'un indicateur d'attente. J'ai essayé différentes choses mais pour une raison que rien d'autre dans le DOM sera mise à jour avant de les congeler. Les modifications sont apportées à une grande table, soit en enlevant ou en ajoutant des colonnes entières, et il agit comme s'il a une plus grande priorité sur toute autre chose, parce que toutes les autres tentatives pour mettre à jour le DOM après avoir cliqué sur la case à cocher ne pas aller jusqu'à ce que la table a terminé re-rendu. FWIW, je peux utiliser la console.le journal pour afficher un message avant la table des mises à jour, et aussi quand il se termine pour une raison quelconque.

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

La meilleure réponse

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
    })
  })
}

L' await tick() s'applique la messageVisible changements pour les DOM.
Le double de la raf va attendre que le navigateur de tirer la mise à jour du DOM.

2021-11-24 12:40:02

Dans d'autres langues

Cette page est dans d'autres langues

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