Como a força de um elemento DOM para a atualização antes de outras pessoas ou mostrar um indicador de espera em Svelte?

0

Pergunta

Eu tenho algumas caixas de verificação que quando clicado irá causar uma série de alterações no DOM, e este congela-se a aplicação por alguns segundos. Eu gostaria que as caixas de verificação para atualização de primeira, e/ou exibir um indicador de espera. Tentei várias coisas, mas por algum motivo nada mais no DOM vai atualizar antes do congelamento. As alterações são feitas em uma tabela grande, removendo ou adicionando colunas inteiras, e ele age como se este tem maior prioridade sobre qualquer outra coisa, porque qualquer outro tenta atualizar o DOM depois de clicar a caixa de seleção não passa até que a tabela foi concluída re-renderização. FWIW, eu posso usar o console.log para exibir uma mensagem antes de a tabela de atualizações, e também depois de conclui-lo por algum motivo.

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

Melhor resposta

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

O await tick() aplica-se o messageVisible alterações para o DOM.
O casal raf vai aguardar o navegador para desenhar atualizado DOM.

2021-11-24 12:40:02

Em outros idiomas

Esta página está em outros idiomas

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