Skip to content

Commit 65f9235

Browse files
authored
Merge pull request #17 from streamich/hooks
Hooks
2 parents 54720dd + aa77272 commit 65f9235

File tree

3 files changed

+38
-24
lines changed

3 files changed

+38
-24
lines changed

package.json

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,29 @@
2424
"react": "*"
2525
},
2626
"devDependencies": {
27-
"@types/chai": "^4.1.6",
28-
"@types/jest": "^23.3.5",
29-
"@types/node": "^10.12.0",
30-
"@types/react": "^16.4.18",
31-
"@types/react-dom": "^16.0.9",
32-
"chai": "4.1.2",
33-
"enzyme": "3.3.0",
34-
"enzyme-adapter-react-16": "^1.1.1",
35-
"enzyme-to-json": "3.3.0",
36-
"jest": "22.1.2",
37-
"jest-environment-jsdom": "^22.1.4",
38-
"jest-environment-jsdom-global": "^1.0.3",
39-
"jest-tap-reporter": "1.9.0",
40-
"mocha": "5.0.0",
41-
"mol-conventional-changelog": "1.2.0",
42-
"react-test-renderer": "16.2.0",
43-
"rimraf": "^2.6.2",
44-
"ts-jest": "^23.10.4",
45-
"ts-node": "^7.0.1",
46-
"typescript": "^3.1.3",
47-
"semantic-release": "^15.10.4",
48-
"react": "^16.5.2",
49-
"react-dom": "^16.5.2"
27+
"@types/chai": "^4.1.7",
28+
"@types/jest": "^24.0.11",
29+
"@types/node": "^11.13.0",
30+
"@types/react": "^16.8.13",
31+
"@types/react-dom": "^16.8.3",
32+
"chai": "^4.2.0",
33+
"enzyme": "^3.9.0",
34+
"enzyme-adapter-react-16": "^1.12.1",
35+
"enzyme-to-json": "^3.3.5",
36+
"jest": "^24.7.1",
37+
"jest-environment-jsdom": "^24.7.1",
38+
"jest-environment-jsdom-global": "^1.2.0",
39+
"jest-tap-reporter": "^1.9.0",
40+
"mocha": "^6.1.1",
41+
"mol-conventional-changelog": "^1.4.0",
42+
"react": "^16.8.6",
43+
"react-dom": "^16.8.6",
44+
"react-test-renderer": "^16.8.6",
45+
"rimraf": "^2.6.3",
46+
"semantic-release": "^15.13.3",
47+
"ts-jest": "^24.0.2",
48+
"ts-node": "^8.0.3",
49+
"typescript": "^3.4.2"
5050
},
5151
"config": {
5252
"commitizen": {
@@ -61,7 +61,7 @@
6161
"jsx"
6262
],
6363
"transform": {
64-
"^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
64+
"^.+\\.tsx?$": "ts-jest"
6565
},
6666
"transformIgnorePatterns": [],
6767
"testRegex": ".*/__tests__/.*\\.(test|spec)\\.(jsx?|tsx?)$",

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)