fragment(attrs, children)
Wprowadzenie
Umożliwia przypisanie metod cyklu życia do fragmentu vnode.
var groupVisible = true;
var log = function () {
console.log('Grupa jest teraz widoczna');
};
m('ul', [
m('li', 'child 1'),
m('li', 'child 2'),
groupVisible
? m.fragment({ oninit: log }, [
// Fragment zawierający dwa elementy
m('li', 'child 3'),
m('li', 'child 4'),
])
: null,
]);
Składnia
Generuje fragment vnode.
vnode = m.fragment(attrs, children)
Argument | Rodzaj | Obowiązkowy | Opis |
---|---|---|---|
attrs | Object | Nie | Atrybuty HTML lub właściwości elementu. |
children | Array<Vnode>|String|Number|Boolean | Nie | Potomne vnode. Można je przekazać jako argumenty splat. |
returns | Vnode | Fragment vnode. |
Zasada działania
m.fragment()
tworzy fragment vnode z atrybutami. Jest przeznaczony do zaawansowanych przypadków użycia, takich jak klucze lub metody cyklu życia.
Fragment vnode reprezentuje listę elementów DOM. Jeśli potrzebujesz zwykłego vnode reprezentującego pojedynczy element DOM i nie wymagasz logiki opartej na kluczach, użyj m()
.
Zazwyczaj można użyć prostych tablic lub argumentów splat, aby zdefiniować listę węzłów:
var groupVisible = true;
m(
'ul',
m('li', 'child 1'),
m('li', 'child 2'),
groupVisible
? [
// Fragment zawierający dwa elementy
m('li', 'child 3'),
m('li', 'child 4'),
]
: null
);
Jednak tablice JavaScript nie mogą być kluczowane ani przechowywać metod cyklu życia. Jedną z opcji byłoby utworzenie elementu opakowującego, który przechowywałby klucz lub metodę cyklu życia, ale czasami dodawanie dodatkowego elementu nie jest pożądane (na przykład w złożonych strukturach tabel). W takich przypadkach można użyć fragmentu vnode.
Używanie m.fragment
zamiast ręcznego tworzenia struktury obiektu vnode ma kilka zalet: m.fragment
tworzy monomorficzne obiekty, które charakteryzują się lepszą wydajnością niż obiekty tworzone dynamicznie. Ponadto użycie m.fragment
jasno komunikuje intencje innym programistom i zmniejsza prawdopodobieństwo, że omyłkowo ustawisz atrybuty na samym obiekcie vnode, zamiast na jego mapie attrs
.