【问题标题】:Do not run an halogen component when an html element is not present当 html 元素不存在时,不要运行卤素组件
【发布时间】:2017-06-03 10:01:55
【问题描述】:

我对 purescript 和卤素完全陌生。当一个 html 元素存在时,我试图显示一个卤素组件(myButton),否则什么都不做。

displayButton :: Eff (HA.HalogenEffects ()) Unit
displayButton = HA.runHalogenAff do
  containerElement <- HA.selectElement (QuerySelector "#halogen-button")
  case containerElement of
    Nothing -> ???
    Just element -> runUI myButton unit element

我不知道在 Nothing 子句中放置什么代码,以便我的代码类型检查并且在这种情况下什么都不做。

【问题讨论】:

    标签: purescript halogen


    【解决方案1】:

    pure unit 是你可以输入的“什么都不做”。你也可以使用for_ 让它变得更好一点:

    for_ containerElement \element ->
      runUI myButton unit element
    

    如果考虑到柯里化,则与以下内容相同:

    for_ containerElement (runUI myButton unit)
    

    【讨论】:

    • 没有一个解决方案(“纯单元”或“for_”)编译。他们都给了我错误:Could not match type { query :: forall a. Query a -&gt; Aff ( avar :: AVAR, ref :: REF, exception :: EXCEPTION, dom :: DOM | t2) a, subscribe :: FreeT (Await Message) (Aff ( avar :: AVAR, ref :: REF, exception :: EXCEPTION, dom :: DOM | t2)) Unit -&gt; Aff ( avar :: AVAR, ref :: REF, exception :: EXCEPTION, dom :: DOM | t2) Unit} with Unit
    • 纯脚本中有两个for_s。来自 Control.Safely 的那个给出了上面的错误。但是使用 Data.Foldable 中的代码可以编译并且似乎可以完美运行。谢谢。
    • 另一个适用于“什么都不做”部分的表达式是Data.Monoid.mempty
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多