使用 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坍縮HTMLv0.18.0

要獲取 counterView 傳送標記訊息,我們必須使用 Html.map 函式:

Html.map FirstCounterMsg (counterView model.firstCounter)

這會更改型別簽名 Html CounterMsg -> Html Msg,因此可以在父檢視中使用計數器,並使用父級的更新函式處理狀態更新。