Jak zmusić element DOM aktualizowana wcześniej innych, czy wskaźnik gotowości w Svelte?

0

Pytanie

Mam kilka pól wyboru, które po kliknięciu powodują wiele zmian w DOM, i to zawiesza się aplikacja na kilka sekund. Chciałbym, aby pola najpierw zostały odnowione i/lub zawierały wskaźnik gotowości. Próbowałem różnych rzeczy, ale z jakiegoś powodu nic więcej w DOM nie będzie aktualizowany do zamrażania. Zmian dokonuje się w wielką tabelę, albo usuwając lub dodając całe kolumny, i to działa tak, jakby to ma wyższy priorytet w porównaniu z czymkolwiek innym, bo wszelkie inne próby zaktualizować DOM po kliknięciu pola wyboru nie są wykonywane do momentu, gdy tabela nie zakończy ponowne wizualizację. FU, mogę korzystać z konsoli.zaloguj się, aby wyświetlić komunikat do aktualizacji tabeli, a także po jej zakończeniu, z jakiegokolwiek powodu.

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

Najlepsza odpowiedź

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

To await tick() stosuje messageVisible zmiany w DOM.
Podwójny raf będzie czekać, aż przeglądarka zwraca odnowiony DOM.

2021-11-24 12:40:02

W innych językach

Ta strona jest w innych językach

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