前言
这是我在学习redux的文档记得笔记,没有教程意义。
简单的例子
1 | //simpleform.jsx |
- 主要方法在reduxForm 里,其会注入很多方法,包括handleSubmit。
renderField Factory
可以使用一个函数方便的生成div+label+input
1 | class renderField extends Component { |
这里可以看到 input props
会包含在Field
设置的name
value
等props
。meta
则是reduxForm
注入的。
验证
- 验证规则默认是blur时候触发
- 可以写在
reduxForm()
方法中
1 | const validate=(value)=>{ |
- 也可以直接写在“行内”
1 | const needEnglish=(value)=>{ |
- 写在submit中,在onSubmit中判断
异步验证
在 reduxForm({})
声明 asyncValidate
函数,以及声明asyncBlurFields
为要在blur
时候触发异步验证的field
1 |
|
** 这里asyncValidate函数返回的必须是一个 Promise
对象
初始化表单
reduxForm
会给 form
注入一个 initialvalues
props
,可以用connect
对应到redux
中的state
来实现初始化数据
1 | function mapStateToProps(state){ |
上面代码中 loadAction是一个action
Remote Submit 提交按钮独立出来
1 | import {submit} form 'redux-form'; |
props
- submitting
- 是够正在提交阶段(submit验证)
reduxForm
- asyncBlurFields
- asyncValidate
- destoryOnUnmount
- enableReinitialize
- boolean 默认值的 false 当为true时候,每次initialValues props变化时候,form都会重新初始化,但是不能初始化 keepDirtyOnreinitialize设置的项
- forceUnregisterOnUnmount
* - getFormState
* - keppDirtyOnReinitialize
- 与enabeReinitialize对应
- initialValues
- 初始值,是个对象,可以用react-redux和store中state对应起来
- onSubmit
- 当不存在handleSubmit时候替代用
- onSubmitFail
- 当submission失败时候触发
- onSubmitSuccess
- propNamespace
- pure
- 不懂
- shouldValidate
- 控制是否进行同步验证,会传入一个参数,有以下属性
- values nextProps props initialRender
- 需要返回true或者false控制是否进行验证
- 控制是否进行同步验证,会传入一个参数,有以下属性
- shouldAsyncValidate
- 控制是否进行一步验证,传入的参数不同
- touchOnBlur
- boolean[true] 设置 fields touched 如果 没有blur事件
- touchOnChange
- 同上 default为false
- persistentSubmitErrors
- boolean[false] 当change事件不存在时候不会移除submit errors
- validate
- warn
实例API
是reduxForm指传入到组件中的props
dirty:boolean
当前值不和初始值(initialValues)相同时候为true
invalid:boolean
存在validation errors 即 true
pristine
和dirty对应
registeredFields:array
一个数组储存着所有field的name和type信息的
reset:function
重置表单到 initialValues
submit:promise
valid:boolean
和 invalid对应
values
当前所有的field values