-
-
Save SanderSpies/6d57a70bbcb5d059fdd8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open ReactDOM | |
module MyComponent = struct | |
(* Component Properties *) | |
type props = {count: int} | |
(* Hey, state can be any type! *) | |
type state = string | |
(* Initializer *) | |
let getInitialState props = "neverBeenClicked" | |
(* Signal handlers - these simply return the next state. *) | |
let componentWillReceiveProps props (prevProps, prevState) = prevState | |
let handleClick {props; state; updater} evt = "hasBeenClicked" | |
(* Render: props and state as arguments, just like we've always wanted *) | |
let render {props; state; updater} = [ | |
Div.make | |
~styleString: "Omit to rely on defaults #thanksOCaml - no really, thanks OCaml" | |
~className: ("P:" ^ props.prefix ^ " S:" ^ state) | |
~onClick: (updater handleClick) | |
~children: [] | |
] | |
end | |
(* CreateComponent as a Functor. OCaml's (SML's) module system proves to be very powerful *) | |
module MyComponentClass = React.CreateComponent (MyComponent) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment