Skip to main content

createContext

Check out the official React docs!

For more detailed information about React concepts and APIs, please refer to the official documentation for createContext.


createContext lets you create a context object to share values between components without passing props manually at every level. This is useful for global state, themes, or configuration.

Shared Counter

Current count: 0

Show code
module Example.UseContext

open Feliz

// Define a context for shared state
// This can should be placed in a separate file for reuse
let CounterContext = React.createContext(None: (int * (int -> unit)) option)

[<ReactComponent>]
let CounterProvider(children: ReactElement list) =
let count, setCount = React.useState(0)
CounterContext.Provider(Some(count, setCount), children)

[<ReactComponent>]
let CounterDisplay() =
let ctx = React.useContext(CounterContext)
match ctx with
| Some(count, _) -> Html.p [ prop.text $"Current count: {count}" ]
| None -> Html.p [ prop.text "No context available" ]

[<ReactComponent>]
let CounterControls() =
let ctx = React.useContext(CounterContext)
match ctx with
| Some(count, setCount) ->
Html.div [
Html.button [
prop.text "+"
prop.onClick (fun _ -> setCount(count + 1))
]
Html.button [
prop.text "-"
prop.onClick (fun _ -> setCount(count - 1))
]
]
| None -> Html.p [ prop.text "No context available" ]

[<ReactComponent(true)>]
let UseContext() =
CounterProvider [
Html.h3 [ prop.text "Shared Counter" ]
CounterDisplay()
CounterControls()
]