Skip to content

Component-launching helper functions in React.Basic.DOM.Util #8

@milesfrain

Description

@milesfrain

Proposing that we add a renderInRoot helper function to make this common pattern easier:

import React.Basic.DOM.Util (renderInRoot)

myComponent :: Component {}
myComponent = do
  component "MyComponentName" \_ -> React.do
    -- ...

main :: Effect Unit 
main = renderInRoot $ myComponent {}

A slightly more verbose option is:

import React.Basic.DOM.Util (createRootElement)

mkMyComponent :: Component {}
mkMyComponent = do
  component "MyComponentName" \_ -> React.do
    -- ...

main :: Effect Unit 
main = do
  root <- createRootElement
  myComponent <- mkMyComponent
  render (myComponent {}) root

We 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 :: Effect Unit
main =
  HA.runHalogenAff do
    body <- HA.awaitBody
    void $ runUI hookComponent Nothing body

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions