Спрошу здесь, хоть может и не 100% по теме: в аппликации, написанной на Feliz (от SAFEr template) хочу обновить состояние из дочерней компоненты в родительскую, причём во время обработки callback:
В общем, пока это дело выглядит так - но убогий Жабаскрипт ругается, говорит, что слишком много вызовов render.  Может у кого-нибудь есть готовый пример как это организовать под Fable/Feliz?
[<ReactComponent>]
let LoginView () =
    let loginForm, setLoginForm = React.useState({ Request.Login.Username = ""; Request.Login.Password = ""; Request.Login.IsPersistent = false })
    let loginReq, setLoginReq = React.useState(Deferred.HasNotStartedYet)
    let loggedInData, setLoggedInData = React.useState<string option>(None)
    let login = React.useDeferredCallback ((fun _ -> Server.service.Login loginForm), setLoginReq)
    
    let globalState = React.useContext SharedView.globalStateContext
    React.useEffect( (fun _ -> 
        let newSession =
            match loggedInData with 
                | None -> { globalState.Session with User = None; LoggedIn = false }
                | Some(user) -> { globalState.Session with User = Some(user); LoggedIn = true }
        if globalState.Session <> newSession then
            Fable.Core.JS.console.log("Updating session with user " + newSession.User.ToString())
            globalState.SetSession(newSession))
        , [| loggedInData :> obj |])
    let result =
        match loginReq with
        | Deferred.HasNotStartedYet
        | Deferred.InProgress -> Html.none
        | Deferred.Failed ex -> ex |> Server.exnToError |> displayStronglyTypedError
        | Deferred.Resolved res ->
            match res with 
                | Ok resp ->
                    setLoggedInData (Some "<TODO>")
                    Html.text "YOU ARE IN!"
                | Error err -> Html.text ("ERROR: " + err.ToString())