在 Elm 中没有消息的 Cmd
Posted
技术标签:
【中文标题】在 Elm 中没有消息的 Cmd【英文标题】:Cmd with no message in Elm 【发布时间】:2018-06-30 05:50:06 【问题描述】:是否可以在 Elm 中创建一个在完成时不发送消息的 Cmd
?
具体来说,我试图让一个元素抓住焦点(以编程方式),但我不需要知道结果:
Dom.focus "element-id"
|> Task.attempt FocusReceived
...
FocusReceived result ->
model ! [] -- result ignored
有没有办法让 Elm“引擎”在 Cmd
之后不发送消息?
我知道我的代码 (FocusReceived result -> model ! []
) 是无操作的,但我希望根本不发送消息。
【问题讨论】:
【参考方案1】:不,Msg
始终是必需的。在典型的 Elm 项目中,一个常见的习惯用法是包含一个 Msg
类型的构造函数,它什么都不做,名为 NoOp
。
type Msg
= NoOp
| ...
update
函数的作用与您示例中的 FocusReceived
相同,即什么也不做。
case msg of
NoOp ->
model ! []
...
【讨论】:
这就是我的怀疑。就我而言,我将让主要的update
函数也触发一个将状态保存到外部存储的命令,所以我想要一种方法来忽略对状态没有影响的命令。谢谢。以上是关于在 Elm 中没有消息的 Cmd的主要内容,如果未能解决你的问题,请参考以下文章