All files / src useActions.ts

100% Statements 9/9
100% Branches 0/0
100% Functions 4/4
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23              23x 23x 23x   7x 10x 11x 11x 11x   10x          
import { useMemo } from 'react';
import { useRegistry } from './useRegistry';
import { AC } from './types';
 
export function useActions<T extends { [x: string]: AC }>(
  actionCreators: T
): T {
  const registry = useRegistry();
  const names = Object.keys(actionCreators);
  return useMemo(
    () =>
      names.reduce((mapped: any, key) => {
        mapped[key] = (...args: any[]) => {
          const action = actionCreators[key](...args);
          registry.dispatch(action);
          return action;
        };
        return mapped;
      }, {} as T),
    names
  );
}