UNPKG

mobx-react-lite

Version:

Lightweight React bindings for MobX based on React 16.8+ and Hooks

24 lines (21 loc) 961 B
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] }