Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@FujiHaruka
Created April 11, 2018 15:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FujiHaruka/c035b25b6a7720b1fc8dd88342378570 to your computer and use it in GitHub Desktop.
Save FujiHaruka/c035b25b6a7720b1fc8dd88342378570 to your computer and use it in GitHub Desktop.
Example to use "recompose" module in TypeScript
import * as React from 'react'
import { withStateHandlers, StateHandler, StateHandlerMap, StateUpdaters } from 'recompose'
type OuterProps = {}
interface AppState {
userName: string
}
interface AppStateHanlderMap extends StateHandlerMap<AppState> {
setUserName: StateHandler<AppState>,
}
const stateHandlers: StateUpdaters<OuterProps, AppState, AppStateHanlderMap> = {
setUserName: () => (userName) => ({ userName }),
}
const enhance = withStateHandlers(
{
userName: 'John',
},
stateHandlers,
)
type Props = OuterProps & AppState & AppStateHanlderMap
class App extends React.Component<Props, {}> {
render () {
const {
userName,
setUserName,
} = this.props
return (
<div>
Hello {userName}
<div>
<button onClick={() => setUserName('Jimmy')} >CHANGE NAME</button>
</div>
</div>
)
}
}
export default enhance(App)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment