davidkpiano/react-redux-form(opens in a new tab)
Language: JavaScript
Create forms easily in React with Redux.
- stars
- 2,036
- watchers
- 1
- forks
- 247
- open issues
- 184
- Last updated
- 06/23/2022
Language: JavaScript
Create forms easily in React with Redux.
React Redux Form is a collection of reducer creators and action creators that make implementing even the most complex and custom forms with React and Redux simple and performant.
npm install react-redux-form@latest --save
# Dependencies (you probably already have these) npm install react react-dom redux react-redux --save # version 1.x.x npm install react-redux-form@latest --save
If you want to get up and running with forms quickly without having to set up Redux, just use Local Forms:
import React from 'react'; import { LocalForm, Control } from 'react-redux-form'; export default class MyApp extends React.Component { handleChange(values) { ... } handleUpdate(form) { ... } handleSubmit(values) { ... } render() { return ( <LocalForm onUpdate={(form) => this.handleUpdate(form)} onChange={(values) => this.handleChange(values)} onSubmit={(values) => this.handleSubmit(values)} > <Control.text model=".username" /> <Control.text model=".password" /> </LocalForm> ); } }
That's all you need. Seriously. Read the Documentation for more information.
NOTE: Please use <LocalForm> with react-redux version 4.x.x or 5.x.x.
For more fine-grained control (such as using custom reducers, storing form state globally, dispatching actions, etc.), you'll want to set up a Redux store for your forms.
Be sure to read the step-by-step quick start guide in the documentation.
import React from 'react'; import { createStore } from 'redux'; import { Provider } from 'react-redux'; import { combineForms } from 'react-redux-form'; import MyForm from './components/my-form-component'; const initialUser = { name: '' }; const store = createStore(combineForms({ user: initialUser, })); class App extends React.Component { render() { return ( <Provider store={ store }> <MyForm /> </Provider> ); } }
// ./components/my-form-component.js' import React from 'react'; import { connect } from 'react-redux'; import { Control, Form } from 'react-redux-form'; class MyForm extends React.Component { handleSubmit(val) { // Do anything you want with the form value console.log(val); } render() { return ( <Form model="user" onSubmit={(val) => this.handleSubmit(val)}> <label>Your name?</label> <Control.text model=".name" /> <button>Submit!</button> </Form> ); } } // No need to connect()! export default MyForm;
When posting an issue, please include a detailed description along with a relevant code sample. Attaching a failing test case with your issue will go a long way and is much appreciated.
Feel free to fork this CodePen or this CodeSandbox for quickly creating reproducible examples!