typescript - 如何在使用 reduxForm 包装的组件内使用 FormInstance 道具(提交)
问题描述
在我们的项目中,由于我们使用自定义中间件submit
而不是handleSubmit
(它不会触发SUBMIT
动作),例如
<Form onSubmit={submitting ? null : submit} />
// instead of
<Form onSubmit={submitting ? null : handleSubmit} />
我们刚刚开始迁移到TypeScript
,问题是当我们尝试使用这个 prop 时,TS 会抱怨它——但是 prop 被注入并在 Component 中可见......
type TestFormProps = { foo?: string};
type InjectedPropsTest = InjectedFormProps<FormData, TestFormProps>
class TestFormComponent extends React.Component<TestFormProps & InjectedPropsTest> {
render() {
// this.props.submit doesn't compile with following error:
// Property 'submit' does not exist on type
// 'Readonly<TestFormProps & InjectedPropsTest> & Readonly<{ children?: ReactNode; }>'.
// ts(2339)
console.log('submit', this.props.submit());
// doesn't compile but without TS code works fine because `submit` prop exists
return <Form onSubmit={submitting ? null : this.props.submit} />
}
}
有谁知道如何让TS满意?我做错了什么还是内部问题?我发现这submit
是FormInstance的一部分,但不知道如何正确使用它......
可行的解决方案,但我认为它们只是解决方法:
- 修改
node_modules/@types/redux-form/lib/reduxForm.d.ts
并添加submit(): void;
到InjectedFormProps
- 作为自定义道具传递
submit
,例如<WrappedForm submit={disptach(submit(formName))} />
——更多的工作,强制执行不同的组合。
我们使用的软件包:
"redux-form": "8.3.7",
"@types/redux-form": "8.3.1",
我将不胜感激任何反馈
解决方案
推荐阅读
- java - 避免多个 if/else 条件
- asp.net-core - Asp.Net-Core 2.1:使用自定义 IInputFormater 的 ModelState 错误
- php - 从输入 [] 获取数据时,从 PDO 中的数组重复插入时循环混乱
- c++ - SDL_Image 库使程序崩溃或使其行为不端
- android - 水平滚动视图自动滚动不起作用
- smtpclient - 错误消息:“SMTP 服务器需要安全连接或客户端未通过身份验证。”
- python - Pandas increase efficiency in merging dataframes
- elasticsearch - 使用术语聚合返回多个字段
- sql - SQL:复制事务正在等待下一个日志备份或镜像伙伴赶上
- python-3.x - 获取熊猫数据框中的最大值