track()
Returns a tracked version of the given component. Any signals whose values are read while the component renders will be tracked. If any of the tracked signals change later it will cause the component to re-render.
This also wraps the component in a React.memo() call, so it will only re-render if the props change.
Example
const Counter = track(function Counter(props: CounterProps) {
const count = useAtom('count', 0)
const increment = useCallback(() => count.set(count.value + 1), [count])
return <button onClick={increment}>{count.value}</button>
})
Signature
track<T>(baseComponent: T): T extends React.MemoExoticComponent<any> ? T : React.MemoExoticComponent<T>;
Type parameters
T
extendsFunctionComponent
<any
,T
>
Parameters
Name | Type |
---|---|
baseComponent | T |
Returns
T
extends React.MemoExoticComponent
<any
> ? T
: React.MemoExoticComponent
<T
>
Defined in: signia-react/src/track.ts:45