fragment(attrs, children)
Descripción
Permite adjuntar métodos de ciclo de vida a un fragmento vnode.
var groupVisible = true;
var log = function () {
console.log('group is now visible');
};
m('ul', [
m('li', 'child 1'),
m('li', 'child 2'),
groupVisible
? m.fragment({ oninit: log }, [
// un fragmento que contiene dos elementos
m('li', 'child 3'),
m('li', 'child 4'),
])
: null,
]);
Firma
Genera un fragmento vnode.
vnode = m.fragment(attrs, children)
Argumento | Tipo | Requerido | Descripción |
---|---|---|---|
attrs | Object | No | Atributos HTML o propiedades del elemento. |
children | Array<Vnode>|String|Number|Boolean | No | Nodos hijos vnodes. Se puede escribir como argumentos splat. |
devuelve | Vnode | Un fragmento vnode. |
Cómo funciona
m.fragment()
crea un fragmento vnode con atributos. Está destinado a casos de uso avanzados que involucran claves o métodos de ciclo de vida.
Un fragmento vnode representa una lista de elementos del DOM. Si se desea un vnode de elemento regular que represente solo un elemento del DOM y no requiera lógica de clave, se debe usar m()
en su lugar.
Normalmente, se pueden usar arrays simples o splats para denotar una lista de nodos:
var groupVisible = true;
m(
'ul',
m('li', 'child 1'),
m('li', 'child 2'),
groupVisible
? [
// un fragmento que contiene dos elementos
m('li', 'child 3'),
m('li', 'child 4'),
]
: null
);
Sin embargo, los arrays de JavaScript no pueden tener claves ni contener métodos de ciclo de vida. Una opción sería crear un elemento contenedor para alojar la clave o el método de ciclo de vida, pero a veces no es deseable tener un elemento adicional (por ejemplo, en estructuras de tablas complejas). En esos casos, se puede usar un fragmento vnode en su lugar.
Usar m.fragment
en lugar de escribir manualmente una estructura de objeto vnode ofrece varios beneficios. Por ejemplo, m.fragment
crea objetos monomórficos, que tienen mejores características de rendimiento que la creación dinámica de objetos. Además, usar m.fragment
comunica claramente las intenciones a otros desarrolladores. Esto reduce la probabilidad de establecer atributos incorrectamente en el objeto vnode en lugar de en su mapa attrs
.