Skip to content
Mithril.js 2
Main Navigation GuideAPI

Français

English
简体中文
繁體中文
Español
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Français

English
简体中文
繁體中文
Español
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Apparence

Sidebar Navigation

API

API principale

m(selector, attributes, children)

render(element, vnodes)

mount(root, component)

route(root, defaultRoute, routes)

request(options)

parseQueryString(string)

buildQueryString(object)

buildPathname(object)

parsePathname(string)

trust(html)

fragment(attrs, children)

redraw()

censor(object, extra)

API optionnelle

stream()

Guide

Sur cette page

redraw() ​

Description ​

Met à jour le DOM suite à une modification des données de l'application.

Il n'est généralement pas nécessaire d'appeler m.redraw() si les données sont modifiées dans le contexte d'un gestionnaire d'événements défini dans une vue Mithril.js, ou après la complétion d'une requête effectuée avec m.request. Le mécanisme de redessin automatique, basé sur m.redraw(), gère ces cas.

Il est impératif d'appeler m.redraw() dans les callbacks de setTimeout, setInterval ou requestAnimationFrame, ainsi que dans les callbacks de bibliothèques tierces.

Signature ​

m.redraw()

ArgumentTypeRequisDescription
returnsNe renvoie rien

Membres statiques ​

m.redraw.sync ​

m.redraw.sync()

ArgumentTypeRequisDescription
returnsNe renvoie rien

Fonctionnement ​

Lorsque des callbacks s'exécutent en dehors du contexte de Mithril.js, il est nécessaire de notifier le moteur de rendu de Mithril.js qu'un rafraîchissement est requis. Ces callbacks externes peuvent inclure ceux de setTimeout, setInterval, requestAnimationFrame, des bibliothèques de sockets web, des gestionnaires d'événements de plugins jQuery, des requêtes XHR tierces, etc.

Pour déclencher un redessin, appelez m.redraw(). Notez que m.redraw() ne fonctionne que si vous avez utilisé m.mount() ou m.route(). Si vous avez rendu votre application via m.render, vous devez utiliser m.render pour effectuer le redessin.

m.redraw() déclenche toujours des redessins asynchrones, tandis que m.redraw.sync() déclenche un redessin synchrone. m.redraw() est lié à window.requestAnimationFrame(). Il s'exécutera donc généralement jusqu'à 60 fois par seconde, voire plus rapidement si votre moniteur a un taux de rafraîchissement supérieur.

m.redraw.sync() est principalement destiné à assurer la lecture de vidéos sous iOS, et uniquement suite à des événements déclenchés par l'utilisateur. Son utilisation comporte plusieurs limitations importantes :

  • Il ne faut pas appeler m.redraw.sync() depuis une méthode de cycle de vie ou la méthode view() d'un composant. Cela entraînera un comportement indéfini (une erreur sera levée lorsque cela est possible).
  • L'appel de m.redraw.sync() depuis un gestionnaire d'événements peut entraîner la modification du DOM pendant la propagation de l'événement. Selon la structure des anciens et nouveaux arbres DOM, l'événement peut terminer sa phase de propagation dans le nouvel arbre et déclencher des gestionnaires d'événements indésirables.
  • Il n'est pas limité. Un appel à m.redraw.sync() provoque immédiatement un appel à m.render() pour chaque racine enregistrée avec m.mount() ou m.route().

m.redraw() ne présente aucun de ces problèmes et peut être appelé où vous le souhaitez.

Pager
Page précédentefragment(attrs, children)
Page suivantecensor(object, extra)

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

https://mithril.js.org/redraw.html

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors