Skip to content
Mithril.js 2
Main Navigation ÚtmutatóAPI

magyar

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

magyar

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

Megjelenés

Sidebar Navigation

Első lépések

Telepítés

Egyszerű példa

Források

JSX

ES6+ öreg böngészőkön

Animációk

Tesztelés

Példák

Harmadik féltől való integráció

Útvonalkezelés

Kulcsfogalmak

Virtuális DOM csomópontok

Komponensek

Életciklus-metódusok

Kulcsok

Az automatikus újrarajzolási rendszer

Egyéb

Framework összehasonlítás

Migrálás v1.x-ről

Átállás v0.2.x verzióról

API

Ezen az oldalon

Az automatikus újrarajzolási rendszer ​

A Mithril.js egy virtuális DOM diffing rendszert valósít meg a gyors rendereléshez, és emellett különféle mechanizmusokat kínál az alkalmazás renderelésének részletes szabályozásához.

Alapértelmezett használat esetén a Mithril.js egy automatikus újrarajzoló rendszert alkalmaz, amely szinkronizálja a DOM-ot, amikor változások történnek az adatokban. Az automatikus újrarajzoló rendszer akkor aktiválódik, amikor meghívja az m.mount vagy az m.route függvényt (de kikapcsolva marad, ha az alkalmazása csak m.render hívásokkal indítják el).

Az automatikus újrarajzoló rendszer lényege, hogy bizonyos függvények befejezése után a háttérben elindít egy újrarajzolási ciklust.

Eseménykezelők után ​

A Mithril.js automatikusan újrarajzol a nézetben definiált DOM eseménykezelők után:

javascript
var MyComponent = {
  view: function () {
    return m('div', { onclick: doSomething });
  },
};

function doSomething() {
  // A függvény futása után szinkron módon történik egy újrarajzolás
}

m.mount(document.body, MyComponent);

Kikapcsolhatja az automatikus újrarajzolást bizonyos eseményeknél az e.redraw értékét false-ra állítva.

javascript
var MyComponent = {
  view: function () {
    return m('div', { onclick: doSomething });
  },
};

function doSomething(e) {
  e.redraw = false;
  // A div elemre kattintás többé nem indít el újrarajzolást
}

m.mount(document.body, MyComponent);

m.request után ​

A Mithril.js automatikusan újrarajzol az m.request befejezését követően:

javascript
m.request('/api/v1/users').then(function () {
  // A függvény futása után történik egy újrarajzolás
});

Letilthatja az automatikus újrarajzolást egy adott kéréshez a background opció true értékre állításával:

javascript
m.request('/api/v1/users', { background: true }).then(function () {
  // Nem indít újrarajzolást
});

Útvonalváltozások után ​

A Mithril.js automatikusan újrarajzol az m.route.set() hívások után, és az útvonalváltozások során a m.route.Link használatával.

javascript
var RoutedComponent = {
  view: function () {
    return [
      // Az útvonal megváltoztatása után aszinkron módon történik egy újrarajzolás
      m(m.route.Link, { href: '/' }),
      m('div', {
        onclick: function () {
          m.route.set('/');
        },
      }),
    ];
  },
};

m.route(document.body, '/', {
  '/': RoutedComponent,
});

Amikor a Mithril.js nem rajzol újra ​

A Mithril.js nem rajzol újra a setTimeout, setInterval, requestAnimationFrame, a nyers Promise feloldások, valamint harmadik féltől származó könyvtárak eseménykezelői után. Ezekben az esetekben manuálisan kell meghívnia az m.redraw() függvényt.

A Mithril.js az életciklus metódusok után sem végez újrarajzolást. Egy oninit kezelő futása után a felhasználói felület egyes részei újrarajzolódhatnak, míg más részei már korábban újrarajzolódtak. Az olyan kezelők, mint az oncreate és az onupdate, a felhasználói felület újrarajzolása után futnak le.

Ha egy életciklus metóduson belül kifejezetten újrarajzolást szeretne indítani, hívja meg az m.redraw() függvényt, ami egy aszinkron újrarajzolást fog eredményezni.

javascript
function StableComponent() {
  var height = 0;

  return {
    oncreate: function (vnode) {
      height = vnode.dom.offsetHeight;
      m.redraw();
    },
    view: function () {
      return m('div', 'This component is ' + height + 'px tall');
    },
  };
}

A Mithril.js nem végzi automatikusan az újrarajzolást az olyan vnode fáknál, amelyeket az m.render renderel. Ez azt jelenti, hogy az m.render által renderelt sablonok esetében az események és az m.request hívások nem váltanak ki automatikus újrarajzolást. Ezért, ha az architektúrája megköveteli a renderelés időpontjának manuális vezérlését (ami néha előfordulhat olyan könyvtárak használatakor, mint a Redux), akkor az m.mount helyett az m.render függvényt kell használnia.

Ne feledje, hogy az m.render egy vnode fát vár, az m.mount pedig egy komponenst:

javascript
// Csomagolja be a komponenst egy m() hívásba az m.render számára
m.render(document.body, m(MyComponent));

// Ne csomagolja be a komponenst az m.mount számára
m.mount(document.body, MyComponent);

A Mithril.js akkor is elkerülheti az automatikus újrarajzolást, ha a kért újrarajzolások gyakorisága meghaladja az egy animációs képkocka idejét (ami általában 16 ms körül van). Ez azt jelenti például, hogy a gyorsan aktiválódó események, például az onresize vagy az onscroll használatakor a Mithril.js automatikusan szabályozza az újrarajzolások számát a késleltetések elkerülése érdekében.

Pager
Előző oldalKulcsok
Következő oldalFramework összehasonlítás

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

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

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors