fragment(attrs, children)
Popis
Umožňuje připojit metody životního cyklu k fragmentu vnode 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 }, [
// fragment obsahující dva elementy
m('li', 'child 3'),
m('li', 'child 4'),
])
: null,
]);
Signatura
Generuje fragment vnode.
vnode = m.fragment(attrs, children)
Argument | Typ | Povinný | Popis |
---|---|---|---|
attrs | Object | Ne | HTML atributy nebo vlastnosti elementu. |
children | Array<Vnode>|String|Number|Boolean | Ne | Potomci vnodes. Může být zapsán jako splat argument. |
returns | Vnode | Fragment vnode. |
Jak to funguje
m.fragment()
vytváří fragment vnode s atributy. Je určen pro pokročilé případy použití, které zahrnují klíče nebo metody životního cyklu.
Fragment vnode reprezentuje seznam DOM elementů. Pokud potřebujete běžný element vnode, který reprezentuje pouze jeden DOM element a nevyžaduje logiku s klíči, použijte m()
.
Běžně můžete použít jednoduchá pole nebo splaty namísto explicitního vytváření seznamu uzlů:
var groupVisible = true;
m(
'ul',
m('li', 'child 1'),
m('li', 'child 2'),
groupVisible
? [
// fragment obsahující dva elementy
m('li', 'child 3'),
m('li', 'child 4'),
]
: null
);
JavaScriptová pole však nemohou mít klíče ani obsahovat metody životního cyklu. Jednou z možností je vytvořit obalový element pro umístění klíče nebo metody životního cyklu, ale někdy není žádoucí mít další element (například ve složitých tabulkových strukturách). V těchto případech lze použít fragment vnode.
Použití m.fragment
namísto ručního vytváření objektové struktury vnode má několik výhod: m.fragment
vytváří monomorfní objekty, které mají lepší výkonnostní charakteristiky než dynamické vytváření objektů. Používání m.fragment
navíc jasně ukazuje vaše záměry ostatním vývojářům a snižuje pravděpodobnost, že omylem nastavíte atributy na samotném objektu vnode, a ne na jeho atributovém objektu attrs
.