如何閱讀簽名
簽名區段通常看起來像這樣:
vnode = m(selector, attributes, children)
參數 | 類型 | 是否為必填 | 描述 |
---|---|---|---|
selector | String|Object | 是 | CSS 選擇器或元件 |
attributes | Object | 否 | HTML 屬性或元素屬性 |
children | Array<Vnode>|String|Number|Boolean | 否 | 子 vnode。可寫成 splat 參數 |
回傳值 | Vnode | 一個 vnode |
表格上方的簽名行表示該方法的一般語法,顯示該方法的名稱、參數的順序,以及建議的回傳值變數名稱。
表格中的 參數 欄位表示簽名中哪個部分由對應的表格列說明。 returns
列顯示該方法的回傳值資訊。
類型 欄位表示參數的預期類型。
管線符號 (|
) 表示參數可以是列出的任一類型。 例如,String|Object
表示 selector
可以是字串或物件。
Array
後面的尖括號 (< >
) 表示陣列元素的預期類型。 例如,Array<String>
表示參數必須為字串陣列。 Object
後面的尖括號表示一個映射表。 例如,Object<String,Component>
表示參數必須是一個物件,其鍵為字串,值為 元件。
有時可能會出現非基本資料類型,以指示需要特定的物件簽名。 例如,Vnode
是一個具有 虛擬 DOM 節點 結構的物件。
是否為必填 欄位表示參數是必填還是可選。 如果參數是可選的,您可以將其設為 null
或 undefined
,或完全省略,以便讓後面的參數使用預設值。
可選參數
用方括號 [ ]
括起來的函數參數是可選的。 在下面的範例中,url
是可選參數。
m.request([url,] options)
Splat 參數
Splat 參數表示如果參數為陣列,您可以省略方括號,並在方法中使用可變數量的參數。
在頂部的範例中,這意味著 m("div", {id: "foo"}, ["a", "b", "c"])
也可以寫成 m("div", {id: "foo"}, "a", "b", "c")
。
Splat 參數在某些編譯為 JS 的語言 (例如 CoffeeScript) 中很有用,並且也允許一些常見情境的簡寫。
函數簽名
函數以箭頭 (->
) 表示。 箭頭的左側表示輸入參數的類型,右側表示回傳值的類型。
例如,parseFloat
的簽名為 String -> Number
,表示它接受字串作為輸入並回傳數字作為輸出。
多參數函數用括號表示:(String, Array) -> Number
元件簽名
元件透過呼叫 m
來表示,但初始選擇器參數會設定為相關章節中命名的常數:
vnode = m(m.route.Link, attributes, children)
參數 | 類型 | 是否為必填 | 描述 |
---|---|---|---|
attributes.href | Object | 是 | 目標導向路由。 |
attributes.selector | String|Object|Function | 否 | 這會設定使用的標籤名稱。如果給定,則必須是 m 的有效選擇器,預設值為 "a" 。 |
attributes.options | Object | 否 | 這會設定傳遞至 m.route.set 的選項。 |
attributes | Object | 否 | 可以傳遞應用於回傳的 vnode 的其他屬性。 |
children | Array<Vnode>|String|Number|Boolean | 否 | 此連結的子 vnode。 |
回傳值 | Vnode | 一個 vnode。 |
此處的子元素 (如果指定) 假定可以寫成 splat 參數,除非章節中另有說明。
沒有合理子元素及/或屬性的元素可以選擇完全省略相關參數:
vnode = m(Component, attributes)
參數 | 類型 | 是否為必填 | 描述 |
---|---|---|---|
attributes.href | Object | 是 | 目標導航路由 |
attributes | Object | 否 | 要套用至回傳的 vnode 的其他屬性 |
回傳值 | Vnode | 一個 vnode |