fragment(attrs, children)
描述
允許將生命週期方法附加到片段 虛擬節點。
javascript
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 }, [
// 包含兩個元素的片段
m('li', 'child 3'),
m('li', 'child 4'),
])
: null,
]);
簽署
生成片段 虛擬節點。
vnode = m.fragment(attrs, children)
引數 | 類型 | 是否必填 | 描述 |
---|---|---|---|
attrs | Object | 否 | HTML 屬性或元素屬性。 |
children | Array<Vnode>|String|Number|Boolean | 否 | 子 虛擬節點。 可以使用 展開語法。 |
回傳值 | Vnode | 一個片段 虛擬節點。 |
運作原理
m.fragment()
建立一個具有屬性的 片段虛擬節點。 它適用於涉及 鍵 或 生命週期方法 的進階使用案例。
片段虛擬節點表示 DOM 元素的列表。 如果您想要一個表示單個 DOM 元素的常規虛擬節點,並且不需要鍵控邏輯,則應改用 m()
。
通常,您可以使用簡單的陣列或展開運算符來表示節點列表:
javascript
var groupVisible = true;
m(
'ul',
m('li', 'child 1'),
m('li', 'child 2'),
groupVisible
? [
// 包含兩個元素的片段
m('li', 'child 3'),
m('li', 'child 4'),
]
: null
);
但是,JavaScript 陣列無法被鍵控或持有生命週期方法。 一種選擇是建立一個包裝元素來承載鍵或生命週期方法,但有時不希望有多餘的元素(例如在複雜的表格結構中)。 在這些情況下,可以使用片段虛擬節點。
使用 m.fragment
而不是手動編寫虛擬節點物件結構有幾個好處:m.fragment
建立 單型別物件,與動態創建物件相比,它具有更好的效能。 此外,使用 m.fragment
可以讓其他開發人員清楚了解您的意圖,並且能降低您錯誤地在虛擬節點物件本身,而不是在其 attrs
映射上設置屬性的可能性。