- Redux Form
- API
formValueSelector()
formValueSelector(form:String, [getFormState:Function])
#
A "selector" API to make it easier to
connect()
to form values.formValueSelector
creates a selector function for your form that can be used with your field names.
Importing #
var formValueSelector = require('redux-form').formValueSelector; // ES5
import { formValueSelector } from 'redux-form'; // ES6
Parameters #
form : String
[required] #
The name of the form you are connecting to. Must be the same as the
form
config value you gave toreduxForm()
.
getFormState : Function
[optional] #
If you are using the
getFormState()
config parameter to keep theredux-form
reducer at a place in your Redux store other thanstate.form
, you must also provide the same function here to get the slice of Redux store where theredux-form
reducer is mounted. Defaults tostate => state.form
.
Selector #
The function returned from formValueSelector()
has the following structure:
selector(state:Object, ...field:String) #
state : Object
[required] #
The global Redux state given to
mapStateToProps
.
...field : String
[required] #
The field, or fields, you want to select. If you provide only one field name, the function will return the value of that field. If you provide more than one field name, it will return an object mapping fields to values. If your field are "deep" (i.e. has one or more
.
in the name), the structure you get back will also be deep. e.g. If your fields are'a.b'
and'a.c'
, the resulting structure will be{ a: { b: 'bValue', c: 'cValue' } }
.
Usage #
The first thing you do is create a selector for your form name.
const selector = formValueSelector('myFormName')
Then, there are several ways to use the selector that was created.
1. Select fields individually #
connect(
state => ({
firstValue: selector(state, 'first'),
secondValue: selector(state, 'second')
})
)(MyFormComponent)
2. Select multiple fields as a group into a grouped prop #
connect(
state => ({
myValues: selector(state, 'first', 'second')
})
)(MyFormComponent)
3. Use the selector as mapStateToProps
#
If you don't need any other props from the state, the selector itself works just fine as
mapStateToProps
if you are selecting multiple fields.
connect(
state => selector(state, 'first', 'second')
)(MyFormComponent)
Example #
See the Selecting Form Values example.