Elm中没有消息的Cmd

6

在Elm中,是否可能创建一个Cmd,在完成后不发送任何消息?

具体来说,我正在尝试让一个元素抓取焦点(通过编程方式),但我不需要知道结果:

Dom.focus "element-id"
    |> Task.attempt FocusReceived
...
FocusReceived result ->
    model ! []  -- result ignored

有没有什么方法可以让Elm“引擎”在执行这个Cmd后不发送消息?

我知道我的代码(FocusReceived result -> model ! [])是无用的,但我希望完全不发送该消息。

1个回答

6
不,Msg 总是必需的。在典型的 Elm 项目中,通常会包含一个名为 NoOp 的什么都不做的 Msg 类型构造器。
type Msg
    = NoOp
    | ...

update 函数与你的示例中的 FocusReceived 函数一样,什么都不做。

case msg of
    NoOp ->
        model ! []
    ...

这正是我所猜测的。在我的情况下,我将使主update函数触发一个命令来将状态保存到外部存储,因此我需要一种忽略对状态无影响的命令的方法。谢谢。 - Ralph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接