[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3431":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":31,"discoverSource":32},3431,"redux-form","redux-form\u002Fredux-form","A Higher Order Component using react-redux to keep form state in a Redux store","https:\u002F\u002Fredux-form.com",null,"JavaScript",12490,1618,166,475,0,2,44.63,"MIT License",false,"master",[22,23,24,25,26,5,27],"form","form-validation","forms","react","redux","validation","2026-06-12 02:00:50","[\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fredux-form\u002Fredux-form\u002Fmaster\u002Flogo.png\" align=\"right\" class=\"logo\" height=\"100\" width=\"165\"\u002F>](https:\u002F\u002Fredux-form.com\u002F)\n\n# redux-form\n\n---\n\n[\u003Cimg src=\"form-nerd-logo.png\" align=\"left\"\u002F>](https:\u002F\u002Fformnerd.co\u002Fredux-form-readme) **You build great forms, but do you know HOW users use your forms? [Find out with Form Nerd!](https:\u002F\u002Fformnerd.co\u002Fredux-form-readme) Professional analytics from the creator of Redux Form.**\n\n---\n\n[![NPM Version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fredux-form.svg?style=flat)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fredux-form)\n[![NPM Downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fredux-form.svg?style=flat)](https:\u002F\u002Fnpmcharts.com\u002Fcompare\u002Fredux-form?minimal=true)\n[![Build Status](https:\u002F\u002Fimg.shields.io\u002Ftravis\u002Fredux-form\u002Fredux-form\u002Fv6.svg?style=flat)](https:\u002F\u002Ftravis-ci.com\u002Fredux-form\u002Fredux-form)\n[![codecov.io](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fredux-form\u002Fredux-form\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fredux-form\u002Fredux-form)\n[![Code Climate](https:\u002F\u002Fcodeclimate.com\u002Fgithub\u002Fredux-form\u002Fredux-form\u002Fbadges\u002Fgpa.svg)](https:\u002F\u002Fcodeclimate.com\u002Fgithub\u002Fredux-form\u002Fredux-form)\n[![styled with prettier](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstyled_with-prettier-ff69b4.svg)](https:\u002F\u002Fgithub.com\u002Fprettier\u002Fprettier)\n[![Twitter URL](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Furl\u002Fhttps\u002Fgithub.com\u002Fredux-form\u002Fredux-form.svg?style=social)](https:\u002F\u002Ftwitter.com\u002Fintent\u002Ftweet?text=With%20@ReduxForm,%20I%20can%20keep%20all%20my%20form%20state%20in%20Redux!%20Thanks,%20@erikras!)\n[![Patreon](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpatreon-support%20the%20author-blue.svg)](https:\u002F\u002Fwww.patreon.com\u002Ferikras)\n[![Backers on Open Collective](https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fbackers\u002Fbadge.svg)](#backers)\n[![Sponsors on Open Collective](https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsors\u002Fbadge.svg)](#sponsors)\n\n`redux-form` works with [React Redux](https:\u002F\u002Fgithub.com\u002Freactjs\u002Freact-redux) to\nenable an html form in [React](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Freact) to use\n[Redux](https:\u002F\u002Fgithub.com\u002Freactjs\u002Fredux) to store all of its state.\n\n---\n\n💰**Psst!! Do you know React and Redux? [Sign up with Triplebyte](https:\u002F\u002Ftriplebyte.com\u002Fa\u002FV6j0KPS\u002Frf) to get offers from top tech companies!** 💰\n\n---\n\n## ⚠️ ATTENTION ⚠️\n\nIf you're just getting started with your application and are looking for a form solution, the [general consensus of the community](https:\u002F\u002Ftwitter.com\u002Facemarke\u002Fstatus\u002F1124771065115185152) is that you should _not_ put your form state in Redux. The author of Redux Form took all of the lessons he learned about form use cases from maintaining Redux Form and built [🏁 React Final Form](https:\u002F\u002Fgithub.com\u002Ffinal-form\u002Freact-final-form#-react-final-form), which he recommends you use if you are just starting your project. It's also pretty easy to migrate to from Redux Form, because the `\u003CField>` component APIs are so similar. [Here is a blog post](https:\u002F\u002Fcodeburst.io\u002Ffinal-form-the-road-to-the-checkered-flag-cd9b75c25fe) where he explains his reasoning, or [there are two talks](https:\u002F\u002Fgithub.com\u002Ffinal-form\u002Freact-final-form#videos) if you prefer video. [Formik](https:\u002F\u002Fjaredpalmer.com\u002Fformik\u002F) is also a nice solution.\n\nThe only good reason, [in the author's view](https:\u002F\u002Ftwitter.com\u002Ferikras\u002Fstatus\u002F1035082880341483520), to use Redux Form in your application is if you need _really_ tight coupling of your form data with Redux, specifically if you need to subscribe to it and modify it from parts of your application far from your form component, e.g. on another route. If you don't have that requirement, use [🏁 React Final Form](https:\u002F\u002Fgithub.com\u002Ffinal-form\u002Freact-final-form#-react-final-form).\n\n## Installation\n\n`npm install --save redux-form`\n\n## Documentation\n\n- [Getting Started](https:\u002F\u002Fredux-form.com\u002F8.2.2\u002Fdocs\u002FGettingStarted.md\u002F)\n- [Examples](https:\u002F\u002Fredux-form.com\u002F8.2.2\u002Fexamples\u002F)\n- [API](https:\u002F\u002Fredux-form.com\u002F8.2.2\u002Fdocs\u002Fapi\u002F)\n- [FAQ](https:\u002F\u002Fredux-form.com\u002F8.2.2\u002Fdocs\u002Ffaq\u002F)\n- [Release Notes](https:\u002F\u002Fgithub.com\u002Fredux-form\u002Fredux-form\u002Freleases)\n- [Older Documentation](https:\u002F\u002Fredux-form.com\u002F8.2.2\u002Fdocs\u002FDocumentationVersions.md\u002F)\n\n## 🏖 Code Sandboxes 🏖\n\nYou can play around with `redux-form` in these sandbox versions of the Examples.\n\n- [Simple Form](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FmZRjw05yp)\n- [Synchronous Validation](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FpQj03w7Y6)\n- [Field-Level Validation](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FPNQYw1kVy)\n- [Submit Validation](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FXoA5vXDgA)\n- [Asynchronous Blur Validation](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FnKlYo387)\n- [Initializing From State](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FMQnD536Km)\n- [Field Arrays](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FWw4QG1Wx)\n- [Remote Submit](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FElYvJR21K)\n- [Normalizing](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FL8KWERjDw)\n- [Immutable JS](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FZVGJQBJMw)\n- [Selecting Form Values](https:\u002F\u002Fcodesandbox.io\u002Fs\u002FgJOBWZMRZ)\n- [Wizard Form](https:\u002F\u002Fcodesandbox.io\u002Fs\u002F0Qzz3843)\n\n## Videos\n\n| [![A Practical Guide to Redux Form – React Alicante 2017](docs\u002FReactAlicante2017.gif)](https:\u002F\u002Fyoutu.be\u002Fey7H8h4ERHg) |\n| :------------------------------------------------------------------------------------------------------------------: |\n|                              **A Practical Guide to Redux Form – React Alicante 2017**                               |\n\n| [![Abstracting Form State with Redux Form – JS Channel 2016](docs\u002FJSChannel2016.gif)](https:\u002F\u002Fyoutu.be\u002FeDTi7lYR1VU) |\n| :-----------------------------------------------------------------------------------------------------------------: |\n|                            **Abstracting Form State with Redux Form – JS Channel 2016**                             |\n\n## Contributors\n\nThis project exists thanks to all the people who contribute.\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fredux-form\u002Fredux-form\u002Fgraphs\u002Fcontributors\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fcontributors.svg?width=890&button=false\" \u002F>\u003C\u002Fa>\n\n## Backers\n\nThank you to all our backers! 🙏 [[Become a backer](https:\u002F\u002Fopencollective.com\u002Fredux-form#backer)]\n\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form#backers\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fbackers.svg?width=890\">\u003C\u002Fa>\n\n## Sponsors\n\nSupport this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https:\u002F\u002Fopencollective.com\u002Fredux-form#sponsor)]\n\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F0\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F0\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F1\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F1\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F2\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F2\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F3\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F3\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F4\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F4\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F5\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F5\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F6\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F6\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F7\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F7\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F8\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F8\u002Favatar.svg\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F9\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fredux-form\u002Fsponsor\u002F9\u002Favatar.svg\">\u003C\u002Fa>\n\n\u003Cimg src=\"https:\u002F\u002Fstatic.scarf.sh\u002Fa.png?x-pxid=e5d6d8d5-b770-4097-a65e-8daa6251800f\" \u002F>\n","redux-form 是一个用于将表单状态存储在 Redux 中的高阶组件。它通过与 React-Redux 结合，实现了表单数据的集中管理，并支持包括验证在内的多种功能，从而简化了复杂表单的开发过程。该库提供了强大的表单处理能力，如异步验证、字段级错误处理以及表单值的持久化等。适用于需要利用 Redux 管理应用状态且希望提高表单相关代码可维护性的 React 项目中。尽管对于新项目官方推荐使用 React Final Form 作为替代方案，但 redux-form 依然是一个成熟且文档齐全的选择。","2026-06-11 02:54:23","top_language"]