如何创建无状态和静态卤素组件?

时间:2017-08-01 07:41:31

标签: purescript halogen

考虑来自github的这个片段,https://github.com/slamdata/purescript-halogen/blob/master/examples/basic/src/Button.purs#L42尝试使用卤素库渲染html按钮。

render :: State -> H.ComponentHTML Query
  render state =
    let
      label = if state then "On" else "Off"
    in
      HH.button
        [ HP.title label
        , HE.onClick (HE.input_ Toggle)
        ]
        [ HH.text label ]

  eval :: Query ~> H.ComponentDSL State Query Message m
  eval = case _ of
    Toggle next -> do
      state <- H.get
      let nextState = not state
      H.put nextState
      H.raise $ Toggled nextState
      pure next
    IsOn reply -> do
      state <- H.get
      pure (reply state)

是否有任何可能的方法来获得最“准系统”的UI控件,只是为了呈现静态UI组件,而不涉及状态?

1 个答案:

答案 0 :(得分:1)

如何设置type State = Unit?然后你的render函数看起来像

render :: State -> H.ComponentHTML Query
render _ = [...]

即。只需忽略该参数(因为无论如何都无法从Unit值中获取任何信息)。