2017-01-13 42 views
0

在我的卤素的项目有这样的eval分支:在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,可能需要一段时间才能恢复。在我的渲染功能我有

, 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渲染之前。它是否正确?

编辑

事实证明,这是用户的错误 - 我打电话我在错误的顺序查询。未来mes:设置状态的确会更新ui :-)

回答

1

不,修改eval期间的状态确实会触发渲染。除非您的Aff不是真的异步,我不确定为什么你不会看到你期望的。

你有没有试过做类似H.fromAff $ later' 5000 $ pure <some value>?其中later'来自Control.Monad.Aff<some value>适合于detail。你应该看到加载微调器5秒,然后在它解析为<some value>之前。

相关问题