Elm 这个'div'调用生成:Html(String->;Msg),但是'view'上的类型注释说它应该是:Html Msg
我目前正在学习elm,我只是偶然发现了这个问题,div返回一个Html(String->Msg)而不是Html Msg 我收到了错误消息 此Elm 这个'div'调用生成:Html(String->;Msg),但是'view'上的类型注释说它应该是:Html Msg,elm,Elm,我目前正在学习elm,我只是偶然发现了这个问题,div返回一个Html(String->Msg)而不是Html Msg 我收到了错误消息 此div调用生成: Html (String -> Msg) 但是视图上的类型注释说它应该是: Html Msg 您将Msg类型定义为 type Msg = Add String| Minus String 使用Add获取String参数,但在此处使用时: button [onClick Add] [text "add"], 你一点也没在
div
调用生成:
Html (String -> Msg)
但是视图
上的类型注释说它应该是:
Html Msg
您将
Msg
类型定义为
type Msg =
Add String| Minus String
使用Add
获取String
参数,但在此处使用时:
button [onClick Add] [text "add"],
你一点也没在争论
潜在的问题似乎是您对Elm架构的心智模型是错误的。您似乎将消息视为“操作”或函数调用而不是事件,其中“代码>添加/代码>是一个函数,该函数将一个参数应用于模型。
<>你应该考虑一个消息来描述它是什么触发的。您可以将其称为AddButtonClicked
,而不是addstring
,不带任何参数(在本例中)。然后让update函数根据模型中的内容执行它应该执行的操作,我猜这是对firstNum
和secondNum
的算术运算
但您也没有填充这些字段。为此,您需要使用onInput
事件,该事件确实会请求包含字符串的消息。例如,您可以添加一条新消息FirstNumChanged String
,然后将其与input
一起使用,如下所示:
input [ placeholder "Text to reverse", onInput FirstNumChanged, value model.firstNum] [],
我将让您在update
中找出如何处理它,因为您没有时间将其变成一个答案或研究如何修复,但简而言之,您的错误是,对于某些x
,您有onClick Add
应该是onClick(Add x)
。
input [ placeholder "Text to reverse", onInput FirstNumChanged, value model.firstNum] [],