在我的卤素项目中有这个 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
如果停止执行 AJAX,则 toAff 位可能需要一段时间才能返回。在我的渲染功能中,我有
, 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 操作返回之前看到一个加载微调器,但看起来 eval 在呈现 html 之前一直运行。这个对吗?
编辑
原来这是用户错误 - 我以错误的顺序调用我的查询。未来的混乱:设置状态确实会更新 ui :-)