/* @flow */ | |
import * as React from 'react' | |
import { compose, withProps } from 'recompose' | |
import type { HOC } from 'recompose' | |
function mapProps<BaseProps: {}, EnhancedProps>( | |
mapperFn: EnhancedProps => BaseProps | |
): (React.ComponentType<BaseProps>) => React.ComponentType<EnhancedProps> { | |
return Component => props => <Component {...mapperFn(props)} /> | |
} | |
// Test that all is fine | |
type EnhancedProps = { hello: string } | |
const enhancer: HOC<*, EnhancedProps> = compose( | |
mapProps(({ hello }) => ({ | |
hello: `${hello} world`, | |
len: hello.length, | |
})), | |
withProps(props => ({ | |
helloAndLen: `${props.hello} ${props.len}`, | |
})) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment