Package: @effect/atom-react
Module: ScopedAtom
Scoped Atom interface with a provider-backed instance.
Example (Providing and reading a scoped atom)
import { make, useAtomValue } from "@effect/atom-react"
import { Atom } from "effect/unstable/reactivity"
import * as React from "react"
const Counter = make(() => Atom.make(0))
function View() {
const atom = Counter.use()
const value = useAtomValue(atom)
return React.createElement("div", null, value)
}
export function App() {
return React.createElement(Counter.Provider, null, React.createElement(View))
}
Signature
export interface ScopedAtom<A extends Atom.Atom<any>, Input = never> {
readonly [TypeId]: TypeId
use(): A
Provider: [Input] extends [never] ? React.FC<{ readonly children?: React.ReactNode | undefined }>
: React.FC<{ readonly children?: React.ReactNode | undefined; readonly value: Input }>
Context: React.Context<A>
}
Since v4.0.0