В вашей функции render
вам нужно использовать ofType
, например, так:
let render () =
ReactDom.render(
ofType<App,_,_> "Counter" [],
document.getElementById "root")
Это позволяет визуализировать объекты, но ничего не происходит, когда вы нажимаете на кнопки.
Чтобы исправить это, измените ваше состояние с int
на object
:
type state = { count: int }
//..
button [ Props.OnClick (fun _ -> this.setState (fun s _ -> { s with count = s.count + 1 })) ] [ str "+" ]
Наконец, также измените ваши реквизиты на object
.
Все на всех , должно работать следующее:
type props = { message: string }
type state = { count: int }
type App (props) =
inherit Component<props, state> (props) with
do
base.setInitState({ count = 0 })
override this.render () =
div
[]
[
h1 [] [ str (sprintf "%s - %i" this.props.message this.state.count) ]
button [ Props.OnClick (fun _ -> this.setState (fun s _ -> { s with count = s.count + 1 })) ] [ str "+" ]
button [ Props.OnClick (fun _ -> this.setState (fun s _ -> { s with count = s.count - 1 })) ] [ str "-" ]
]
let render () =
ReactDom.render(
ofType<App,_,_> { message = "Counter" } [],
document.getElementById "root")
render ()