2017-01-13 5 views
0

이 평가 지점을 가지고 :할로겐으로 평가하는 동안 구성 요소를 렌더링 할 수 있습니까? 내 할로겐 프로젝트에서

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를하고 해제하는 경우 반환하는 데 시간이 걸릴 수 있습니다. 내 렌더링 함수에서 나는 순진하게도 html로가 렌더링되기 전에 평가를 통해 모든 방법을 실행처럼 내 AFF 액션 반환 될 때까지, 그러나 보이는 때 로딩 스피너를 볼 것으로 예상하고 있습니다

, 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] 

있습니다. 이 올바른지?

편집

이 사용자의 오류했습니다 밝혀 - 내가 잘못된 순서로 내 쿼리를 호출했다. 미래 mes : 상태를 설정하면 실제로 업데이트되지 않습니다.

답변

1

아니요, eval 동안 상태를 수정하면 실제로 렌더링이 시작됩니다. Aff이 실제로 비동기 적이 지 않으면 않는 한, 왜 당신이 여기에서 당신이 무엇을 기대하는지 보지 못할 것입니다.

H.fromAff $ later' 5000 $ pure <some value>과 같은 것을 시도해 보셨습니까? 여기서 later'Control.Monad.Aff<some value>에서 제공되며 detail에 적합합니다. <some value>으로 확인되기 전에 5 초 동안 로딩 스피너가 표시되어야합니다.