使用 Html.App.map 進行訊息標記
元件定義自己的訊息,在發出的 DOM 事件之後傳送,例如。來自親子溝通的 CounterMsg
type CounterMsg
= Increment
| Decrement
| Reset
該元件的檢視將傳送 CounterMsg
型別的訊息,因此檢視型別簽名為 Html CounterMsg
。
為了能夠在父元件的檢視中重用 counterView
,我們需要通過父級的 Msg
傳遞每個 CounterMsg
訊息。
這種技術稱為訊息標記。
父元件必須定義用於傳遞子訊息的訊息:
type Msg
= FirstCounterMsg CounterMsg
| SecondCounterMsg CounterMsg
| ResetAll
FirstCounterMsg Increment
是一個標記的訊息。
Version < 0.18.0
要獲得 counterView
傳送標記訊息,我們必須使用 Html.App.map
函式:
Html.map FirstCounterMsg (counterView model.firstCounter)
Version >= 0.18.0
該 HTML.App
包坍縮成 HTML
包 v0.18.0
要獲取 counterView
傳送標記訊息,我們必須使用 Html.map
函式:
Html.map FirstCounterMsg (counterView model.firstCounter)
這會更改型別簽名 Html CounterMsg -> Html Msg
,因此可以在父檢視中使用計數器,並使用父級的更新函式處理狀態更新。