Field Action Creators
All model and field actions can be imported via import { actions } from 'react-redux-form'.
actions.focus(model)
Returns an action that, when handled by a formReducer, changes the .focus state of the field model in the form to true.
The "focus" state indicates that the field model is the currently focused field in the form.
Arguments
model(String): the model indicated as focused
import { actions } from 'react-redux-form';
// in a connect()-ed component:
const Newsletter = (props) => {
let { newsletterForm, dispatch } = props;
return <form>
<input type="email"
onFocus={() => dispatch(actions.focus('newsletter.email'))} />
{ newsletterForm.fields.email.focus &&
<div>Sweet, you're signing up!</div>
}
</form>;
}
actions.blur(model)
Returns an action that, when handled by a formReducer, changes the .focus state to false. It also indicates that the field model has been .touched, and will set that state to true.
A "blurred" field indicates that the field model control is not currently focused.
Arguments:
model(String): the model indicated as blurred (not focused)
actions.setPristine(model)
Returns an action that, when handled by a formReducer, changes the .pristine state of the field model in the form to true.
The "pristine" state indicates that the user has not interacted with this field model yet.
Arguments
model(String): the model indicated as pristine
Tips
- Whenever a field is set to pristine, the entire form is set to:
- pristine if all other fields are pristine
- otherwise, dirty.
actions.setDirty(model)
Returns an action that, when handled by a formReducer, changes the .pristine state to false.
A "dirty" field indicates that the model value has been changed, and is no longer pristine.
Arguments
model(String): the model indicated as not pristine (dirty)
Tips
- Whenever a field is set to not pristine (dirty), the entire form is set to not pristine (dirty).
actions.setPending(model, [pending])
Returns an action that, when handled by a formReducer, changes the .pending state of the field model in the form to true. It simultaneously sets the .submitted state to false.
Arguments
model(String): the model indicated as pendingpending(Boolean): whether the model is pending (true) or not (false).- default:
true
- default:
Tips
- This action is useful when asynchronously validating or submitting a model. It represents the state between the initial and final state of a field model's validation/submission.
actions.setTouched(model)
Returns an action that, when handled by a formReducer, changes the .touched state of the field model in the form to true. It simultaneously sets the .untouched state to false.
The "touched" state indicates that this model has been interacted with.
Arguments
model: (String) the model indicated as touched
Tips
- Setting a
modelto touched also sets the entire form to touched. - Touched also sets the
modelto not focused (blurred).
actions.setUntouched(model)
Returns an action that, when handled by a formReducer, changes the .touched state to true.
An "untouched" field indicates that this model has not been interacted with yet.
Arguments
model(String): the model indicated as not touched (untouched)
Tips
- This action is useful for conditionally displaying error messages based on whether the field has been touched.
actions.setSubmitted(model, [submitted])
Returns an action that, when handled by a formReducer, changes the .submitted state of the field model in the form to submitted (true or false). It simultaneously sets the .pending state to the inverse of submitted.
The "submitted" state indicates that this model has been "sent off," or an action has been completed for the model.
Arguments
model(String): the model indicated as submittedsubmitted(Boolean): whether the model has been submitted (true) or not (false).- default:
true
- default:
Example
import { actions } from 'react-redux-form';
// action thunk creator
export default function submitUser(data) {
return (dispatch) => {
dispatch(actions.setPending('user', true));
fetch('...', { body: data })
.then((response) => {
// handle the response, then...
dispatch(actions.setSubmitted('user', true));
});
}
}
Tips
- Use the
setPending()andsetSubmitted()actions together to update the state of the field model during some async action.
actions.setSubmitFailed(model)
Returns an action that, when handled by a formReducer, changes the .submitFailed state of the field model in the form to true. It simultaneously sets the .pending state to false, and the .retouched state to false.
Arguments
model(String): the model indicated as having failed a submit
Tips
- If the form has not been submitted yet,
.submitFailed = false - If submitting (pending),
.submitFailed = false - If submit failed,
.submitFailed = true - If resubmitting,
.submitFailed = falseagain.
actions.setInitial(model)
Returns an action that, when handled by a formReducer, changes the state of the field model in the form to its initial state.
Here is the default initial field state:
const initialFieldState = {
focus: false,
pending: false,
pristine: true,
submitted: false,
touched: false,
valid: true,
validating: false,
viewValue: null,
validity: {},
errors: {},
};
Arguments
model(String): the model to be reset to its initial state
Tips
- This action will reset the field state, but will not reset the
modelvalue in the model reducer. To reset both the field and model, useactions.reset(model).