Skip to content

Commit aa77272

Browse files
committed
feat: 🎸 add hookToRenderProp
1 parent 171c3a6 commit aa77272

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/hookToRenderProp.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {FC} from 'react';
2+
import render from './render';
3+
4+
export type MapPropsToArgs<Props extends {}, Args extends any[]> = (props: Props) => Args;
5+
export type CreateRenderProp = <Props extends {}, Args extends any[], State extends any>(hook: (...args: Args) => State, mapPropsToArgs?: MapPropsToArgs<Props, Args>) => FC<Props>;
6+
7+
const defaultMapPropsToArgs = props => [props];
8+
9+
const hookToRenderProp: CreateRenderProp = (hook, mapPropsToArgs = defaultMapPropsToArgs as any) =>
10+
props => render(props, hook(...mapPropsToArgs(props)));
11+
12+
export default hookToRenderProp;

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import render from './render';
22
import createEnhancer from './createEnhancer';
3+
import hookToRenderProp from './hookToRenderProp';
34

45
export interface UniversalProps<Data> {
56
children?: ((data: Data) => React.ReactNode) | React.ReactNode;
@@ -11,4 +12,5 @@ export interface UniversalProps<Data> {
1112
export {
1213
render,
1314
createEnhancer,
15+
hookToRenderProp,
1416
};

0 commit comments

Comments
 (0)