redux-form
Version:
A higher order component decorator for forms using Redux and React
33 lines (30 loc) • 1.14 kB
JavaScript
import createReduxFormConnector from './createReduxFormConnector';
import hoistStatics from 'hoist-non-react-statics';
/**
* The decorator that is the main API to redux-form
*/
const createReduxForm =
(isReactNative, React, connect) => {
const {Component} = React;
const reduxFormConnector = createReduxFormConnector(isReactNative, React, connect);
return (config, mapStateToProps, mapDispatchToProps, mergeProps, options) =>
WrappedComponent => {
const ReduxFormConnector = reduxFormConnector(WrappedComponent, mapStateToProps, mapDispatchToProps, mergeProps, options);
const configWithDefaults = {
touchOnBlur: true,
touchOnChange: false,
destroyOnUnmount: true,
...config
};
class ConnectedForm extends Component {
render() {
return (<ReduxFormConnector
{...configWithDefaults}
{...this.props}
submitPassback={submit => this.submit = submit}/>);
}
}
return hoistStatics(ConnectedForm, WrappedComponent);
};
};
export default createReduxForm;