1

我正在尝试学习 ReasonML,并在Reason React Hacker News ( ) 的来源中遇到了这一行src/CommentList.re

type action =
  | Toggle(option(string));

下一次出现的action是作为函数中的参数reducer

reducer: (action, state) =>
  switch action {
  | Toggle(commentId) =>
    ReasonReact.Update({
      collapsed_comments: toggleComment(state.collapsed_comments, commentId)
    })
  }

我浏览了文档,但没有看到任何提及这种结构或实践的内容(也许我想念它?)。这仅仅是让参数和类型共享相同名称然后依靠类型推断将参数action与类型匹配的样式约定action吗?还是这里有某种语法糖?

为什么不通过显式命名类型来减少混淆actionType呢?或者,在 Reason 社区中,让类型和参数同名的行为是某种新兴的风格约定?

4

1 回答 1

0

ReasonReact 文档

有一个用户定义的类型叫做 action,按照约定命名。它是组件中所有可能的状态转换的变体。

因此,您可以根据actionType需要将其重命名为(我认为这可能更清楚)。reducer 中的类型是推断出来的,不依赖于类型名称。

于 2018-03-15T11:01:26.277 回答