erikras/redux-form

View on GitHub
docs/api/Selectors.md

Summary

Maintainability
Test Coverage
# Selectors

[`View source on GitHub`](https://github.com/redux-form/redux-form/tree/master/src/selectors)

`redux-form` provides a set of useful Redux state
[**selectors**](https://redux.js.org/recipes/computing-derived-data/) that may be used in
any part of your application to query the state of any of your forms.

All of the selectors listed below have the same usage pattern: they all (apart from
getFormNames) take the name of the form, and create a selector for whatever form state
the selector is for.

They also all take an undocumented final parameter `getFormState()` that is
used to select the mount point of the `redux-form` reducer from the root Redux reducer (it
defaults to `state => state.form`, assuming that you have mounted the `redux-form` reducer under
`form`.

```js
import {
  getFormValues,
  getFormInitialValues,
  getFormSyncErrors,
  getFormMeta,
  getFormAsyncErrors,
  getFormSyncWarnings,
  getFormSubmitErrors,
  getFormError,
  getFormNames,
  isDirty,
  isPristine,
  isValid,
  isInvalid,
  isSubmitting,
  hasSubmitSucceeded,
  hasSubmitFailed
} from 'redux-form'

MyComponent = connect(state => ({
  formValues: getFormValues('myForm')(state),
  initialValues: getFormInitialValues('myForm')(state),
  formSyncErrors: getFormSyncErrors('myForm')(state),
  fields: getFormMeta('myForm')(state),
  formAsyncErrors: getFormAsyncErrors('myForm')(state),
  syncWarnings: getFormSyncWarnings('myForm')(state),
  submitErrors: getFormSubmitErrors('myForm')(state),
  formError: getFormError('myForm')(state),
  names: getFormNames()(state),
  dirty: isDirty('myForm')(state),
  pristine: isPristine('myForm')(state),
  valid: isValid('myForm')(state),
  invalid: isInvalid('myForm')(state),
  submitting: isSubmitting('myForm')(state),
  submitSucceeded: hasSubmitSucceeded('myForm')(state),
  submitFailed: hasSubmitFailed('myForm')(state)
}))(MyComponent)
```

## List of Selectors

### `getFormValues(formName:String)` returns `(state) => formValues:Object`

> Gets the current form values in real-time.

### `getFormInitialValues(formName:String)` returns `(state) => formInitialValues:Object`

> Gets the form's initial values.

### `getFormError(formName:String)` returns `(state) => formError:any`

> Returns the form-wide error, the one set with the special `_error` property.

### `getFormSyncErrors(formName:String)` returns `(state) => formSyncErrors:Object`

> Returns the form synchronous validation errors.

### `getFormMeta(formName:String)` returns `(state) => formMeta:Object`

> Returns the form's fields meta data, namely `touched` and `visited`.

> NOTE: redux-form creates the `formMeta` object lazily as each individual form field gets visited/touched/etc. Empty/missing properties imply that the corresponding field (or set of fields) has neither been visited nor touched.

### `getFormAsyncErrors(formName:String)` returns `(state) => formAsyncErrors:Object`

> Returns the form asynchronous validation errors.

### `getFormSyncWarnings(formName:String)` returns `(state) => formSyncWarnings:Object`

> Returns the form synchronous warnings.

### `getFormSubmitErrors(formName:String)` returns `(state) => formSubmitErrors:Object`

> Returns the form submit validation errors.

### `getFormNames()` returns `(state) => formNames:Array`

> Gets the names of all the forms currently managed by Redux-Form.

> The reason that this is a function that returns a function is twofold:

> 1.  symmetry with the other selectors
> 2.  to allow for the `getFormState` parameter described at the top of this page.

> If you are using ImmutableJS, it will return a `List`.

### `isDirty(formName:String)` returns `(state, ...fields:String[]) => dirty:boolean`

> Returns `true` if the form is dirty, i.e. the values have been altered from the original
> `initialValues` provided. The opposite of `isPristine`.

### `isPristine(formName:String)` returns `(state, ...fields:String[]) => pristine:boolean`

> Returns `true` if the form is pristine, i.e. the values have NOT been altered from the original
> `initialValues` provided. The opposite of `isDirty`.

### `isValid(formName:String)` returns `(state) => valid:boolean`

> Returns `true` if the form is valid, i.e. has no sync, async, or submission errors. The opposite
> of `isInvalid`.

### `isInvalid(formName:String)` returns `(state) => invalid:boolean`

> Returns `true` if the form is invalid, i.e. has sync, async, or submission errors. The opposite
> of `isValid`.

### `isSubmitting(formName:String)` returns `(state) => submitting:boolean`

> Returns `true` if the form is submitting.

### `hasSubmitSucceeded(formName:String)` returns `(state) => submitSucceeded:boolean`

> Returns `true` if the form has previously been successfully submitted.

### `hasSubmitFailed(formName:String)` returns `(state) => submitFailed:boolean`

> Returns `true` if the form has previously failed to submit.