gpt4 book ai didi

javascript - 如何在 Typescript/Formik 中使用 useRef?

转载 作者:行者123 更新时间:2023-12-01 15:43:36 25 4
gpt4 key购买 nike

我路过一个 ref属性添加到我用于 Formik 验证表单的自定义 FieldInput 中。但是,它给出了一些 Typescript 错误。例如,在我的函数中:

    const handleSubmitForm = (
values: FormValues,
helpers: FormikHelpers<FormValues>,
) => {

setShowFlatList(true);
Keyboard.dismiss();
helpers.resetForm();
if (fieldRef && fieldRef.current){
fieldRef.current.blur();}
helpers.resetForm();
};
我在 fieldRef.current 上收到一个错误 Object is possibly 'undefined'. .我认为添加 if 条件会解决它,但它没有。另外,当我提交表单时,我收到一条警告
Warning: An unhandled error was caught from submitForm()
Error: "fieldRef.current.blur is not a function. (In 'fieldRef.current.blur()', 'fieldRef.current.blur' is undefined)" in handleSubmitForm
同样,在我使用的自定义 FieldInput 组件中 ref={fieldRef} ,我收到一个错误:
Type '{ ref: MutableRefObject<undefined>; setFieldTouched: (field: string, isTouched?: boolean | undefined, shouldValidate?: boolean | undefined) => void; handleChange: { ...; }; ... 4 more ...; placeholderText: string; }' is not assignable to type 'IntrinsicAttributes & FieldInputProps & { children?: ReactNode; }'.
Property 'ref' does not exist on type 'IntrinsicAttributes & FieldInputProps & { children?: ReactNode; }'.ts(2322)
我该如何解决这些问题?
这是一个代码沙盒:
https://snack.expo.io/@nhammad/jealous-beef-jerky-fix

最佳答案

如果您查看当前的泛型类型 forwardRef方法,第一个参数是 unknown .只需将您的签名输入方法更改为

export const FieldInput = React.forwardRef<Input, FieldInputProps>(...)
Typescript 将根据 forwardRef 自动解析正确的类型方法返回类型。

关于javascript - 如何在 Typescript/Formik 中使用 useRef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63706732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com