寻找一种避免使用Props
时在formik
的{{1}}的所有25 ++属性中写下来的方法。
错误正是这样的:connect()
我想使用整个Type '{ entry: Entry; }' is missing the following properties from type 'Props': values, errors, touched, isValidating, and 25 more.
对象,也可以使用其中的formik
,所以像这样:
values
或类似的话:
const MyComponent = ({ entry, values }: Props) => { //...
像这样导出它时:const MyComponent = ({ entry, formik }: Props) => { //...
(还没有输入,可能需要一些帮助)
我正在努力处理以下类型:
export default connect(MyComponent);
甚至
import * as React from 'react';
import {
connect,
FormikProps,
FormikValues
...
} from 'formik';
...
interface Props extends Pick<FormikProps<FormikValues>, 'values'> {
entry: Entry;
values: Pick<FormikProps<FormikValues>, 'values'>;
// values: FormikValues; //tryouts
}
或
interface Props extends FormikProps<FormikValues> {
entry: Entry;
// values: FormikValues;
}
我不想将const MyComponent = ({ entry, values }: Props & FormikProps<FormikValues>) => {
道具设为可选(所以formik
部分)。但是,如果我不使用?
,则会收到错误消息?
。但是我不明白,因为所有这些道具都是通过Property 'values' (or formik) is missing in type '{ entry: Entry; }' but required in type 'Props'.
传递的,而不是通过父组件传递的。
我认为connect()
关键字可让您避免完全输入extends SomeProps
中的属性。因此,我不必在我的SomeProps
界面中加入formik
或values
或任何这些道具。
我怎么了?在这种情况下,类型声明应该如何?
答案 0 :(得分:1)
请注意,connect不再是Formik的一部分,请改用useFormik
。
您可以用这种方式定义它。
interface Props = {
entry: Entry;
}
const MyComponent = ({ entry, values}): Props & FormikProps<FormikValues> => {
const ConnectedComponent = connect<Props, any>(MyComponent)
现在,您可以轻松使用<ConnectedComponent />
而不会出现任何类型错误