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 映射上設置屬性的可能性。