docs/api/ReduxFormContext.md
ReduxFormContextReduxFormContext is a React.Context that allows to hook into parent redux-form. All this redux-form components use ReduxFormContext to hook into parent form.
FieldFieldArrayFieldsFormValuesFormNameFormSectionReduxFormContext has a ReduxFormContext.Provider and a ReduxFormContext.Consumer
ReduxFormContext.ProviderCan be used to extend a redux-form, but this has to be done inside a redux-form, otherwise the value will be null.
Ex: FormSection component is using Provider to extend parent redux-form
ReduxFormContext.ConsumerCan be used to create implementation of a custom Field or other components that depend on a parent redux-form.
Consumer should be inside a redux-form that provides the ReduxFormContext.Provider, otherwise the render prop argument will be null
var ReduxFormContext = require('redux-form').ReduxFormContext // ES5
import { ReduxFormContext } from 'redux-form' // ES6
ReduxFormContext.Providerimport React from 'react'
import { ReduxFormContext, reduxForm, Context } from 'redux-form'
const withReduxForm = reduxForm({ form: 'form-name' })
const ExtendReduxForm = withReduxForm(props => (
<ReduxFormContext.Consumer>
{(reduxForm: Context) => (
<ReduxFormContext.Provider
{...props}
value={{
...reduxForm
// extend
}}
/>
)}
</ReduxFormContext.Consumer>
))
const ExtendReduxFormUsingHooks = withReduxForm(props => {
const reduxForm: Context = React.useContext(ReduxFormContext)
return (
<ReduxFormContext.Provider
{...props}
value={{
...reduxForm
// extend
}}
/>
)
})
const ExtendWithoutParentReduxForm = props => (
<ReduxFormContext.Consumer>
{(reduxForm: Context) => (
<ReduxFormContext.Provider
{...props}
value={{
...reduxForm
// extend
}}
/>
)}
</ReduxFormContext.Consumer>
)
ReduxFormContext.Consumerimport React from 'react'
import { ReduxFormContext, reduxForm, Context } from 'redux-form'
const CustomField = (props) => (
<ReduxFormContext.Consumer>
{(reduxForm: Context) => /* render */}
</ReduxFormContext.Consumer>
)
const Form = reduxForm({ form: 'form-name' })((props) => (
<form onSubmit={props.handleSubmit}>
<CustomField />
</form>
))