typescript - 在 Formik 中使用 innerRef 访问 formik 状态,如错误
问题描述
我正在将 NextJS 与 Typescript 一起使用。我在我的子组件中使用 Formik 制作了一个表单。我是innerRef
从我的父组件传递过来的。我想在我的父组件中访问 Formik 状态,如errors
,touched
等。显然,innerRef
不允许您访问它。我应该使用什么方法?
子组件:
const ChildComponent: React.VFC<ChildComponentProps> = (props) => {
const formik = useFormik({
innerRef: formRef,
initialValues: formInitialValues,
validationSchema: createNewStoreFormValidationSchema,
onSubmit: (values, helpers) => {
onSubmit && onSubmit(values, helpers);
},
});
React.useImperativeHandle(formRef, () => ({ ...formik }));
return (
<Col className={classes.container}>
<Col
className={clsx(
classes.generalInformationContainer,
containerClassName
)}
>
<Text variant="h3" className={classes.generalInformation}>
General Information
</Text>
<TextField
id="firstField"
label="First Field"
labelInk="neutralPrimary"
className={classes.field}
value={formik.values.firstField}
errorText={showFieldError(
formik.touched.firstField,
formik.errors.firstField
)}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<TextField
id="secondField"
label="Second Field"
labelInk="neutralPrimary"
value={formik.values.secondField}
errorText={showFieldError(
formik.touched.secondField,
formik.errors.secondField
)}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
</Col>
</Col>
);
}
export default ChildComponent
父组件:
const ParentComponent: React.VFC<ParentComponentProps> = (props) => {
const childFormRef= React.createRef<FormikProps<typeof formInitialValues>>();
const childFormOnSubmit = React.useCallback(() => {
childFormRef.current?.handleSubmit();
}, [childFormRef]);
return (
<CreateNewStore
formRef={childFormRef}
onSubmit={childFormOnSubmit}
/>
)
}
解决方案
推荐阅读
- cookies - GDPR 和不存储个人数据的 cookie
- entity-framework - 需要主键的实体框架和表
- kubernetes - 仅使用服务帐户 kubectl 令牌对 Gcloud Kubernetes 进行身份验证?
- xml - 使用 wordml 在 XSLT 中添加回车
- swift - NSMutableAttributedString 的可变大小范围
- scala - Play Framework with Internationalization 测试失败
- python - Python3 中的“变量:值”是什么意思?
- ruby-on-rails - Ruby on Rails 上是否有一对一辅导的地方?
- java - 在 maxInactiveInterval 之后,Jboss SSO 会话没有被破坏
- oracle - 从 Oracle 表类型对象中查找唯一值