是否有可能不在 Elm 中的每个计时器 Tick 中重新创建整个模型?

Is it possible not to recreate whole model every timer Tick in Elm?

例如,我需要在页面上设置一个计时器。所以我可以每 100 毫秒执行一次操作

type Action = Tick Time

我的 Model 中有字段 time。模型可能很大,但由于时间场的原因,我需要每 100 毫秒重新创建它和整个视图。我认为这在性能方面不会有效。

是否有其他方法或者我不应该担心这样的事情?

不一定每次都重新创建整个视图。 Elm 使用 Virtual DOM 并进行差异化以仅更改实际 DOM 的最低限度。如果你的视图的大部分实际上每 100 毫秒变化一次,那么这显然会导致问题,但我猜你只是每 100 毫秒进行一次较小的调整,你可能没有什么可担心的。查看您的开发人员工具,了解进程利用率是否激增。

您的模型也不是每 100 毫秒重新创建一次。围绕底层数据结构进行了优化(参见 this related conversation about foldp internals),让您从不变性和纯粹性的角度思考,但在底层进行了优化。