Proposing that we add a renderInRoot helper function to make this common pattern easier:
importReact.Basic.DOM.Util (renderInRoot)
myComponent::Component{}
myComponent = do
component "MyComponentName" \_ ->React.do-- ...main::EffectUnit main = renderInRoot $ myComponent {}A slightly more verbose option is:
importReact.Basic.DOM.Util (createRootElement)
mkMyComponent::Component{}
mkMyComponent = do
component "MyComponentName" \_ ->React.do-- ...main::EffectUnit main = do
root <- createRootElement
myComponent <- mkMyComponent
render (myComponent {}) rootWe could support both options, and reuse createRootElement in renderInRoot.
For context, Halogen has some convenient helper functions for launching components, such as awaitBody in Halogen.Aff.Util:
hookComponent = Hooks.component \_ _ ->Hooks.do-- ...main::EffectUnit
main =
HA.runHalogenAff do
body <-HA.awaitBody
void $ runUI hookComponent Nothing body
Proposing that we add a
renderInRoothelper function to make this common pattern easier:A slightly more verbose option is:
We could support both options, and reuse
createRootElementinrenderInRoot.For context, Halogen has some convenient helper functions for launching components, such as
awaitBodyin Halogen.Aff.Util: