reactRx.d.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { ReactNode } from 'react';
  2. import { Observable } from 'rxjs';
  3. /**
  4. * unwrap an observable value, return it to the component for rendering, and
  5. * trigger re-render when value changes
  6. *
  7. * **IMPORTANT**. Parent and child components better not subscribe to the same
  8. * observable, otherwise unnecessary re-render would be triggered. Instead, the
  9. * top-most component should subscribe and pass value of the observable to
  10. * its offspring, by props or context. Please consider using `useDependencyContext` and
  11. * `useDependencyContextValue` in this case.
  12. *
  13. * @deprecated Please use `useObservable` instead.
  14. */
  15. export declare function useDependencyValue<T>(depValue$: Observable<T>, defaultValue?: T): T | undefined;
  16. type ObservableOrFn<T> = Observable<T> | (() => Observable<T>);
  17. type Nullable<T> = T | undefined | null;
  18. export declare function useObservable<T>(observable: Nullable<ObservableOrFn<T>>): T | undefined;
  19. export declare function useObservable<T>(observable: Nullable<ObservableOrFn<T>>, defaultValue: T): T;
  20. export declare function useObservable<T>(observable: Nullable<ObservableOrFn<T>>, defaultValue: undefined, shouldHaveSyncValue: true, deps?: any[]): T;
  21. export declare function useObservable<T>(observable: Nullable<ObservableOrFn<T>>, defaultValue?: undefined, shouldHaveSyncValue?: true, deps?: any[]): T | undefined;
  22. /**
  23. * subscribe to a signal that emits whenever data updates and re-render
  24. *
  25. * @param update$ a signal that the data the functional component depends has updated
  26. */
  27. export declare function useUpdateBinder(update$: Observable<void>): void;
  28. /**
  29. * subscribe to an observable value from a service, creating a context for it so
  30. * it child component won't have to subscribe again and cause unnecessary
  31. */
  32. export declare function useDependencyContext<T>(depValue$: Observable<T>, defaultValue?: T): {
  33. Provider: (props: {
  34. initialState?: T;
  35. children: ReactNode;
  36. }) => JSX.Element;
  37. value: T | undefined;
  38. };
  39. export declare function useDependencyContextValue<T>(depValue$: Observable<T>): T | undefined;
  40. export {};