Skip to content
Mithril.js 2
Main Navigation GuíaAPI

Español

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

Español

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

Apariencia

Sidebar Navigation

API

API principal

m(selector, attributes, children)

render(elemento, vnodes)

mount(root, component)

route(root, defaultRoute, routes)

request(options)

parseQueryString(string)

buildQueryString(objeto)

buildPathname(objeto)

parsePathname(string)

trust(html)

fragment(attrs, children)

redraw()

censor(object, extra)

API opcional

stream()

Guía

En esta página

mount(root, component) ​

Descripción ​

Activa un componente, permitiendo que se redibuje automáticamente en respuesta a eventos del usuario.

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

Para pasar argumentos al montar un componente, use:

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

Firma ​

m.mount(element, Component)

ArgumentoTipoObligatorioDescripción
elementElementSíUn elemento DOM que será el nodo padre del subárbol.
ComponentComponent|nullSíEl componente a renderizar. null desmonta el árbol y elimina el estado interno.
devuelveNo devuelve nada.

Cómo leer firmas

Cómo funciona ​

m.mount(element, Component), cuando se invoca, renderiza el componente en el elemento y suscribe la pareja (element, Component) al subsistema de redibujo. Ese árbol se volverá a renderizar cuando se activen los redibujos manuales o automáticos.

En el redibujo, el nuevo árbol vDOM se compara (se realiza un "diff") con el antiguo, y el árbol DOM existente se modifica solo donde es necesario para reflejar los cambios. Los nodos DOM que no cambian no se modifican.

Reemplazar un componente ​

Ejecutar mount(element, OtherComponent) donde element es un punto de montaje actual, reemplaza el componente previamente montado con OtherComponent.

Desmontar ​

Usar m.mount(element, null) en un elemento con un componente previamente montado lo desmonta y elimina el estado interno de Mithril.js. Esto puede ser útil para evitar fugas de memoria al eliminar manualmente el nodo root del DOM.

Montajes sin interfaz ​

En ciertas situaciones avanzadas, es posible que desee suscribirse y escuchar los redibujos sin renderizar nada en la pantalla. Esto se puede hacer usando un montaje sin interfaz, creado simplemente invocando m.mount con un elemento que no se agrega al árbol DOM activo y colocando toda su lógica útil en el componente con el que se está montando. Todavía necesita una función view en su componente, solo que no tiene que devolver nada útil y puede devolver un valor como null o undefined.

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

// Subscribe
m.mount(elem, {
  oncreate: function () {
    // Se ejecuta una vez que se añade
  },
  onupdate: function () {
    // Se ejecuta en cada redibujo
  },
  onremove: function () {
    // Limpia lo que necesites
  },

  // Boilerplate necesario
  view: function () {},
});

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

No es necesario preocuparse por otras raíces de montaje. Se admiten múltiples raíces y no se sobrescribirán entre sí. Incluso puede hacer lo anterior en un componente al integrarse con otro framework, y no habrá problemas.

Consideraciones de rendimiento ​

Podría parecer ineficiente generar un árbol vnode en cada redibujo, pero resulta que crear y comparar estructuras de datos de JavaScript es sorprendentemente económico en comparación con leer y modificar el DOM.

Manipular el DOM puede ser extremadamente costoso por varias razones. La alternancia de lecturas y escrituras puede afectar negativamente el rendimiento al provocar que se produzcan varios repintados del navegador rápidamente, mientras que la comparación de árboles DOM virtuales permite que las escrituras se agrupen en un solo repintado. Además, las características de rendimiento de varias operaciones DOM varían entre implementaciones y pueden ser difíciles de aprender y optimizar para todos los navegadores. Por ejemplo, en algunas implementaciones, leer childNodes.length tiene una complejidad de O(n); en algunos, leer parentNode provoca un repintado, etc.

Por el contrario, recorrer una estructura de datos de JavaScript tiene un perfil de rendimiento mucho más predecible y razonable, y además, un árbol vnode se implementa de tal manera que permite a los motores de JavaScript modernos aplicar optimizaciones agresivas, como clases ocultas, para un rendimiento aún mejor.

Diferencias con m.render ​

Un componente renderizado con m.mount se redibuja automáticamente en respuesta a eventos de la vista, llamadas a m.redraw() o llamadas a m.request(). Los vnodes renderizados a través de m.render() no lo hacen.

m.mount() es adecuado para desarrolladores de aplicaciones que integran widgets de Mithril.js en bases de código existentes donde el enrutamiento es manejado por otra biblioteca o framework, mientras que aún disfrutan de las facilidades de redibujo automático de Mithril.js.

m.render() es adecuado para autores de bibliotecas que desean controlar manualmente la renderización (por ejemplo, al conectarse a un enrutador de terceros o al usar bibliotecas de capa de datos de terceros como Redux).

Pager
Anteriorrender(elemento, vnodes)
Siguienteroute(root, defaultRoute, routes)

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

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

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors