在scala或scalajs Diode中,现有类型中的任何一种都符合“;更新一个没有'还不存在”;

In scala or scalajs Diode, do any of the existing types line up with the use case of "updating a model that doesn't yet exist"?

本文关键字:更新 一个 不存在 Diode scalajs scala 类型 任何一      更新时间:2023-09-26

这里有一个常见的情况:您有一个表单,并且您对该表单的提交感兴趣。您可以通过添加服务器端验证器,甚至客户端验证器来增加问题,但提供验证器只是为了确保您提交的输入在该实例中有效;在0和提交之间收集的任何状态都将被丢弃,并且是偶然的。

这里有一种不太常见的情况:您的表单有一个密码/确认字段,您需要连接该字段才能以显而易见的方式工作,并连接以显示密码强度(和有效性)的指示。在过去,我看到过很多"在更改时为事件处理程序编写一个jQuery回调,并到此为止。"这只是一个更极端的情况,需要介于两者之间的状态才能到达目的地,而不是目的地本身。

现在有一种非常罕见的情况:你需要跟踪这份表格的输入,因为这是美国政府用来与怀俄明州核掩体中的人沟通的表格。表单输入在提交时有效当然很重要,但我们还需要尽可能多地了解它是如何到达那里的。比方说它是一个登录表单。例如,如果我们跟踪从0到提交的事件序列,并将其与过去进行比较,我们可以检测到用户行为的异常。我们可以在听说登录服务器问题之前确定是否存在问题。所以这并不总是一次性信息。

我想将事件onChange映射到一些二极管概念,但我很难弄清楚我应该做什么

  1. 我可以为每个字段类型和排列的每个对象类型定义一个新的case class,并将它们全部粘贴在根模型中(这似乎是一种愚蠢的方法)
  2. 我可以定义一个表示"输入值中未提交的更改"的通用数据结构,它也将指示模型和字段的更改。看起来是最佳的,但可能是不必要的,需要大量的工作和努力才能做好
  3. 我可以使用现有的数据结构,比如Pot,来代替我的Scratch数据结构。也许是最好的主意,但不确定该用哪一个

这就是我现在的处境……任何深思熟虑的建议都将不胜感激。

这可能是使用聊天效果更好的地方,但这里有一些关于此事的想法。

有三个地方可以存储这样的事件日志:

  1. 处于视图构件的状态。只需将带有时间戳的事件添加到存储在视图状态中的列表中。提交时,将此列表与其他数据一起发送。

  2. 在二极管型号中。同样,在模型中存储一个事件列表,并与表单数据一起提交。

  3. 在服务器中。将每个事件分别发送到服务器,让它担心它们的含义。根本不需要在客户端存储。

对于这样的瞬态数据,我根本不会通过二极管进行路由,而是使用选项1或3进行传输。