Можно ли визуализировать компонент во время оценки в галогене?

В моем галогенном проекте есть эта ветка 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>,

Другие вопросы по тегам