jungpaeng/sagen

View on GitHub
src/hooks/useGlobalStore.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { CreateStore, SetValueFunction } from 'sagen-core';
import { SagenState, useSagenState } from './useSagenState';
import { useSetSagenState } from './useSetSagenState';

export function useGlobalStore<Selected = never, State = any>(
  store: CreateStore<State>,
  selector?: (value: State) => Selected,
  equalityFn?: (prev: State, next: State) => boolean,
): [SagenState<Selected, State>, (state: State | SetValueFunction<State>) => void] {
  const sagenState = useSagenState<Selected, State>(store, selector, equalityFn);
  const setSagenState = useSetSagenState<State>(store);

  return [sagenState, setSagenState];
}