使用 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,因此可以在父视图中使用计数器,并使用父级的更新函数处理状态更新。