Redux Form结合TypeScript使用时提示需补全InjectedFormProps所有属性
问题根因
你给reduxForm HOC传入的第二个泛型参数错误,导致TS误判需要父组件传入所有Redux Form自动注入的属性:reduxForm的第二泛型位要求传入的是外部父组件主动传给表单的属性类型,你传入了包含InjectedFormProps的联合类型TGoldForm,而InjectedFormProps下的20多个属性都是reduxForm HOC自动注入给表单组件的,根本不需要外部传递,所以触发了属性缺失报错。
修复方案
只需要修改你导出表单时reduxForm的泛型参数即可,将原来传入的TGoldForm替换为你定义的外部属性类型IProps:
// 错误写法 // const redForm = reduxForm<IGold, TGoldForm>({ // 正确写法 const redForm = reduxForm<IGold, IProps>({ form: 'gold', validate, })(GoldForm);
你的其他代码逻辑无需改动:
- 组件内部定义的
TGoldForm = InjectedFormProps<IGold, IProps> & IProps依然有效,这个是表单组件内部接收的全量属性类型,包含了外部传入和自动注入的属性 - 父组件传递属性的逻辑也无需改动,TS会自动校验你传的属性是否符合
IProps的定义
额外可选优化
如果后续你需要给表单传递initialValues、enableReinitialize这类Redux Form支持的外部配置属性,可以直接加在IProps的类型定义里即可。
内容的提问来源于stack exchange,提问作者lulu33
相关产品推荐
相关产品推荐

