Let's define our model

type Model = int  type Msg =  | Increment  | Decrement

Handle our state initialization and updates

open Elmish  let init () =  0  let update (msg:Msg) count =  match msg with  | Increment -> count + 1  | Decrement -> count - 1

Rendering views with React

Let's open React bindings and define our view using them:

open Fable.React open Fable.React.Props  let view model dispatch =   div []  [  button [ OnClick (fun _ -> dispatch Decrement) ] [ str "-" ]  div [] [ str (sprintf "%A" model) ]  button [ OnClick (fun _ -> dispatch Increment) ] [ str "+" ]  ]

Create the program instance

Now we need to tell React to render our view in the div placeholder we defined in our index.html:

<div id="elmish-app"></div>

by augumenting our program instance and passing the placeholder id:

open Elmish.React  Program.mkSimple init update view |> Program.withReactBatched "elmish-app" |> Program.run

And that's it.