mobx-react-lite
Version:
Lightweight React bindings for MobX based on React 16.8+ and Hooks
24 lines (21 loc) • 961 B
text/typescript
import { observable } from "mobx"
import { useState } from "react"
import { useDeprecated } from "./utils/utils"
import { useAsObservableSource } from "./useAsObservableSource"
export function useLocalStore<TStore extends Record<string, any>>(initializer: () => TStore): TStore
export function useLocalStore<TStore extends Record<string, any>, TSource extends object>(
initializer: (source: TSource) => TStore,
current: TSource
): TStore
export function useLocalStore<TStore extends Record<string, any>, TSource extends object>(
initializer: (source?: TSource) => TStore,
current?: TSource
): TStore {
if ("production" !== process.env.NODE_ENV) {
useDeprecated(
"[mobx-react-lite] 'useLocalStore' is deprecated, use 'useLocalObservable' instead."
)
}
const source = current && useAsObservableSource(current)
return useState(() => observable(initializer(source), undefined, { autoBind: true }))[0]
}