Можно ли визуализировать компонент во время оценки в галогене?
В моем галогенном проекте есть эта ветка 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: установка состояния действительно обновляет интерфейс:-)
1 ответ
Нет, изменение состояния во время eval
должен действительно вызвать рендер. Если только ваш Aff
на самом деле не асинхронный, я не уверен, почему вы не увидите то, что вы ожидаете здесь.
Вы пытались сделать что-то вроде H.fromAff $ later' 5000 $ pure <some value>
? куда later'
происходит от Control.Monad.Aff
а также <some value>
что-то подходит для detail
, Вы должны увидеть загрузочный счетчик в течение 5 секунд, прежде чем он разрешится <some value>
,