redraw()
Descrição
Atualiza o DOM após uma alteração nos dados da aplicação.
Você NÃO precisa chamá-lo se os dados forem modificados dentro do contexto de execução de um manipulador de eventos definido em uma view do Mithril.js, ou após a conclusão de uma requisição ao usar m.request
. O sistema de autoredraw, que é construído sobre m.redraw()
, cuidará disso automaticamente.
Você PRECISA chamá-lo em callbacks de setTimeout
/setInterval
/requestAnimationFrame
, ou callbacks de bibliotecas de terceiros.
Assinatura
m.redraw()
Argumento | Tipo | Obrigatório | Descrição |
---|---|---|---|
retorna | Não retorna nada |
Membros estáticos
m.redraw.sync
m.redraw.sync()
Argumento | Tipo | Obrigatório | Descrição |
---|---|---|---|
retorna | Não retorna nada |
Como funciona
Quando callbacks fora do Mithril.js são executados, você precisa notificar o mecanismo de renderização do Mithril.js de que um redraw é necessário. Callbacks externos podem ser setTimeout
/setInterval
/requestAnimationFrame
, callbacks de bibliotecas de WebSocket, manipuladores de eventos em plugins jQuery, callbacks de requisições XHR de terceiros, etc.
Para disparar um redraw, chame m.redraw()
. Note que m.redraw
só funciona se você utilizou m.mount
ou m.route
. Se você renderizou via m.render
, você deve usar m.render
para forçar o redraw.
m.redraw()
sempre dispara redraws assíncronos, enquanto m.redraw.sync()
dispara um redesenho síncrono. m.redraw()
está vinculado a window.requestAnimationFrame()
. Portanto, ele normalmente será chamado no máximo 60 vezes por segundo. Ele pode ser chamado mais rapidamente se o seu monitor tiver uma taxa de atualização maior.
m.redraw.sync()
é principalmente destinado a fazer vídeos funcionarem no iOS. Isso só funciona em resposta a eventos gerados pelo usuário e possui algumas ressalvas:
- Você não deve chamar
m.redraw.sync()
de um método de ciclo de vida ou do métodoview()
de um componente. Isso resultará em comportamento indefinido (e pode lançar um erro). m.redraw.sync()
chamado de um manipulador de eventos pode fazer com que o DOM seja modificado enquanto um evento está em bubbling. Dependendo da estrutura das árvores DOM anteriores e novas, o evento pode terminar a fase de bubbling na nova árvore e disparar manipuladores indesejados.- Ele não possui limitação de taxa (throttling). Uma chamada para
m.redraw.sync()
causa imediatamente uma chamadam.render()
para cada raiz registrada comm.mount()
oum.route()
.
m.redraw()
não tem nenhum desses problemas, você pode chamá-lo de onde precisar.