Skip to content
Mithril.js 2
Main Navigation NávodAPI

čeština

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

čeština

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

Vzhled

Sidebar Navigation

API

Základní API

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)

Volitelné API

stream()

Návod

Na této stránce

mount(root, component) ​

Popis funkce ​

Aktivuje komponentu a umožňuje její automatické překreslování v reakci na uživatelské události.

javascript
var state = {
  count: 0,
  inc: function () {
    state.count++;
  },
};

var Counter = {
  view: function () {
    return m('div', { onclick: state.inc }, state.count);
  },
};

m.mount(document.body, Counter);

Pro předání argumentů komponentě při připojování použijte následující syntaxi:

javascript
m.mount(element, {
  view: function () {
    return m(Component, attrs);
  },
});

Signatura ​

m.mount(element, Component)

ArgumentTypPovinnýPopis
elementElementAnoDOM element, který bude rodičovským uzlem pro podstrom komponenty.
ComponentComponent|nullAnoKomponenta k vykreslení. null odpojí strom komponenty a vyčistí interní stav.
returnsNic nevrací

Jak číst signatury

Princip fungování ​

m.mount(element, Component) při zavolání vykreslí komponentu do zadaného elementu a uloží si pár (element, Component) v subsystému překreslování. Tento strom komponenty se automaticky překreslí, když jsou spuštěny manuální nebo automatické překreslení.

Při překreslení se nový vDOM strom porovná (nebo "diffuje") se starým a existující DOM strom se upraví pouze v místech, kde je to nutné, aby reflektoval změny. Nezměněné DOM uzly zůstanou beze změny.

Nahrazení komponenty ​

Volání mount(element, OtherComponent), kde element je stávající bod připojení, nahradí dříve připojenou komponentu komponentou OtherComponent.

Odpojení ​

Použití m.mount(element, null) na element, ke kterému byla dříve připojena komponenta, ji odpojí a vyčistí interní stav Mithril.js. To je užitečné pro prevenci úniku paměti, pokud ručně odstraňujete kořenový uzel (root) z DOM.

Připojení bez vykreslování ​

V pokročilejších případech můžete chtít odebírat a reagovat na překreslování, aniž byste cokoliv vykreslovali na obrazovku. Toho lze dosáhnout pomocí bezhlavého připojení, které vytvoříte zavoláním m.mount s elementem, který není připojen k živému DOM stromu, a vložením veškeré logiky do připojované komponenty. Vaše komponenta stále potřebuje metodu view, ale ta nemusí vracet nic užitečného a může vracet například null nebo undefined.

javascript
var elem = document.createElement('div');

// Subscribe
m.mount(elem, {
  oncreate: function () {
    // Voláno po přidání elementu do DOM
  },
  onupdate: function () {
    // Voláno při každém překreslení
  },
  onremove: function () {
    // Provedení úklidu
  },

  // Nezbytný základ
  view: function () {},
});

// Unsubscribe
m.mount(elem, null);

Není třeba se obávat kolize s jinými kořenovými body připojení. Je podporováno více kořenů a nebudou si navzájem překážet. Výše uvedené můžete dokonce provést v komponentě při integraci s jiným frameworkem a nebude to problém.

Dopad na výkon ​

Generování vnode stromu se může zdát zbytečné při každém překreslení, ale vytváření a porovnávání datových struktur JavaScriptu je překvapivě nenáročné ve srovnání se čtením a úpravou DOM.

Manipulace s DOM může být extrémně nákladná z několika důvodů. Střídavé čtení a zápisy mohou negativně ovlivnit výkon, protože způsobují opakované překreslování prohlížeče. Porovnávání virtuálních DOM stromů naopak umožňuje seskupit zápisy do jednoho překreslení. Výkonnostní charakteristiky různých DOM operací se navíc liší mezi implementacemi a může být obtížné je naučit se a optimalizovat pro všechny prohlížeče. Například v některých implementacích má čtení childNodes.length složitost O(n); v některých způsobuje čtení parentNode překreslení atd.

Naopak, procházení javascriptových datových struktur má mnohem předvídatelnější a rozumnější výkonnostní profil a navíc je vnode strom implementován takovým způsobem, který umožňuje moderním JavaScriptovým enginům aplikovat agresivní optimalizace, jako jsou skryté třídy, pro ještě lepší výkon.

Rozdíly oproti m.render ​

Komponenta vykreslená pomocí m.mount se automaticky překresluje v reakci na události zobrazení a volání m.redraw() nebo m.request(). Vnody vykreslené pomocí m.render() se automaticky nepřekreslují.

m.mount() je vhodný pro vývojáře aplikací, kteří integrují widgety Mithril.js do stávajících kódových základen, kde směrování řeší jiná knihovna nebo framework. Díky tomu mohou využívat automatické překreslování Mithril.js.

m.render() je vhodný pro autory knihoven, kteří chtějí ručně řídit vykreslování (např. při integraci se směrovačem třetí strany nebo při používání knihoven třetích stran pro datovou vrstvu, jako je Redux).

Pager
Předchozí stránkarender(element, vnodes)
Další stránkaroute(root, defaultRoute, routes)

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors