Skip to content

Instantly share code, notes, and snippets.

@jordwalke
Last active December 13, 2021 17:32
Show Gist options
  • Save jordwalke/67819c91df1552009b22 to your computer and use it in GitHub Desktop.
Save jordwalke/67819c91df1552009b22 to your computer and use it in GitHub Desktop.
React OCaml API
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)
@IwanKaramazow
Copy link

What's the purpose of updater, I mean what does it do ?

@jordwalke
Copy link
Author

Sorry for the late reply - I suspect @IwanKaramazow knows what updater is for now - now that he actually implemented it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment