Как заставить элемент DOM обновляться раньше других или показывать индикатор ожидания в Svelte?

0

Вопрос

У меня есть несколько флажков, которые при нажатии вызовут множество изменений в DOM, и это замораживает приложение на несколько секунд. Я бы хотел, чтобы флажки сначала обновились и/или отображали индикатор ожидания. Я пробовал разные вещи, но по какой-то причине больше ничего в DOM не будет обновляться до замораживания. Изменения вносятся в большую таблицу, либо удаляя, либо добавляя целые столбцы, и это действует так, как будто это имеет более высокий приоритет по сравнению с чем-либо другим, потому что любые другие попытки обновить DOM после нажатия флажка не выполняются до тех пор, пока таблица не завершит повторную визуализацию. ФУ, я могу использовать консоль.войдите, чтобы отобразить сообщение до обновления таблицы, а также после ее завершения по какой-либо причине.

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

Лучший ответ

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

То await tick() применяет messageVisible изменения в DOM.
Двойной raf будет ждать, пока браузер нарисует обновленный DOM.

2021-11-24 12:40:02

На других языках

Эта страница на других языках

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

Популярное в этой категории

Популярные вопросы в этой категории