About

Metadata

  • Last updated , by joelb
  • License MIT
  • Categories Web Development
  • Maintained by: joelburget@gmail.com

  • Lottery factor: 0

Links

Installation

Package Flags

Use the -f option with cabal commands to enable flags

    ghcjs (on by default)

    tell cabal we're using ghcjs

Readme

This package provides high level bindings to Facebook's React library, meant for use with GHCJS.

React is a JavaScript library for building user interfaces. React (and React-Haskell) is focused on just UI - it's not a framework.

Currently React-Haskell can render simple stateful components, but not what React calls classes. Put another way, React-Haskell doesn't support lifecycle methods yet.

Here's a simple example which demonstrates basic elements, attributes, state, and handling events.

page_ :: ReactNode Void
page_ =
    let cls = smartClass
            -- this is a record and these should really be curly braces,
            -- but haddock breaks on them.
            [ name = "page"

            -- initially the input is empty
            , initialState = ""

            -- always transition to the input's new value
            , transition = \(_, value) -> (value, Nothing)

            , renderFn = \_ str -> div_ [ class_ "container" ] $ do
                input_ [ value_ str, onChange (Just . value . target) ]
            ]
    in classLeaf cls ()

main :: IO ()
main = do
    Just doc <- currentDocument
    Just elem <- documentGetElementById doc ("elem" :: JSString)
    render page_ elem