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