1、对于简单的表单应用
①使用redux-form-utils工具库来减少重复冗余的代码,它能利用高阶组件的特性为表单的每个字段提供value和onChange等必须值,而无需你手动创建。
②redux-form-utils提供的createForm(config)工具函数:传入表单的配置,自动为被装饰的组件添加表单相关的props,示例如下

③redux-form-utils提供的bindRedux(config)工具函数:生成与Redux应用相关的reducer、initialState和actionCreator等,示例如下:

2、对于复杂的表单应用
①使用redux-form,它除了提供表单必须的字段外,还能实现表单同步验证、异步验证甚至嵌套表单等复杂功能。
②在使用和配置方面,redux-form与redux-form-utils没有太多的差异,唯一不同的是redux-form需要在Redux应用的state树中挂载一个独立的节点。具体示例如下:

3、使用高阶reducer为现有模块引入表单功能(即如何在最小改动的基础上为一个完整的redux应用添加表单相关的功能)
①需要引入一个高阶reducer---modeled,用来装饰我们的myReducer

②装饰完成后,当你想要修改定义在这个reducer里的状态,则需要用到react-redux-form的actions.change方法

③以上可以看到,使用react-redux-form的高阶reducer可以简单快捷的为reducer代码添加表单处理的能力,而无需对现有的代码及结构进行大幅的修改
网友评论