在我的自定义 Halogen/Purescript 项目中,我遵循AJAX 示例中的模式,将我的操作分为 pure Input
s 和 effectful Request
s。
我想更改我的事件处理程序以使用该preventDefault
行为,但不明白这会对 UI 函数的类型产生什么影响。
我通过以下方式更改事件处理程序对 AJAX 示例进行了相同的更改:
前:
H.button [ A.classes [B.btn, B.btnPrimary]
, A.disabled busy
, A.onclick (\_ -> pure (handler code))
] [ H.text "Compile" ]
后:
H.a [ A.classes [B.btn, B.btnPrimary]
, A.href "#compile"
, A.disabled busy
, A.onclick (\_ -> E.preventDefault $> pure (handler code))
] [ H.text "Compile" ]
(此处提供完整差异)
我最终遇到了这种类型的错误:
Cannot unify type
Example.Ajax.Input
with type
Halogen.HTML.Events.Monad.Event Halogen.HalogenEffects<(http ::
Example.Ajax.HTTP | u32519)> Example.Ajax.Input
在这一点上,我是否需要调整 UI 函数的类型签名或者我preventDefault
以错误的方式应用修饰符有点迷茫。