是否可以在卤素评估期间渲染组件?
Is it possible to render a component during eval in halogen?
在我的卤素项目中有这个 eval 分支:
eval (SetTest tName next) = do
H.set (State Nothing)
detail <- H.fromAff $ toAff settings $ getTestsByTestname (tName ^. unTestName)
H.set (State (Just detail))
pure next
toAff 位如果关闭 AJAX 并且可能需要一段时间才能 return。在我的渲染函数中我有
, case ts of
Nothing ->
HH.div [class_ BS.centerBlock]
[HH.i [classes (HH.className <$> ["fa", "fa-spinner", "fa-spin", "loading"])]
[]
]
Just td ->
HH.h3_ [HH.text $ td ^. tdName<<<unTestName]
我天真地期望在我的 aff 动作 return 之前看到一个加载微调器,但看起来 eval 在呈现 html 之前一直运行。这是正确的吗?
编辑
原来这是用户错误 - 我以错误的顺序调用我的查询。 Future mes:设置状态确实会更新 ui :-)
不,在 eval
期间修改状态确实应该触发渲染。除非您的 Aff
不是真正的异步,否则我不确定为什么您不会在这里看到您期望的内容。
您是否尝试过 H.fromAff $ later' 5000 $ pure <some value>
之类的操作?其中 later'
来自 Control.Monad.Aff
而 <some value>
适合 detail
。在它解析为 <some value>
.
之前,您应该会看到加载微调器 5 秒
在我的卤素项目中有这个 eval 分支:
eval (SetTest tName next) = do
H.set (State Nothing)
detail <- H.fromAff $ toAff settings $ getTestsByTestname (tName ^. unTestName)
H.set (State (Just detail))
pure next
toAff 位如果关闭 AJAX 并且可能需要一段时间才能 return。在我的渲染函数中我有
, case ts of
Nothing ->
HH.div [class_ BS.centerBlock]
[HH.i [classes (HH.className <$> ["fa", "fa-spinner", "fa-spin", "loading"])]
[]
]
Just td ->
HH.h3_ [HH.text $ td ^. tdName<<<unTestName]
我天真地期望在我的 aff 动作 return 之前看到一个加载微调器,但看起来 eval 在呈现 html 之前一直运行。这是正确的吗?
编辑
原来这是用户错误 - 我以错误的顺序调用我的查询。 Future mes:设置状态确实会更新 ui :-)
不,在 eval
期间修改状态确实应该触发渲染。除非您的 Aff
不是真正的异步,否则我不确定为什么您不会在这里看到您期望的内容。
您是否尝试过 H.fromAff $ later' 5000 $ pure <some value>
之类的操作?其中 later'
来自 Control.Monad.Aff
而 <some value>
适合 detail
。在它解析为 <some value>
.