从表单外部重置 React Native Formik 表单
Reset a React Native Formik form from outside the form
我知道您可以在 Formik 中使用 resetForm
来重置 onSubmit
中的表单。但是,有没有办法通过为其分配一个 ref 并以某种方式调用 rest 表单方法以编程方式重置它?
有一个名为 innerRef 的道具可以为 formik 表单制作 ref
<Formik
innerRef={(p) => (this.formik = p)}
/>
然后像这样使用它:
onPress={() => this.formik.resetForm()}
或使用功能组件:
const formikRef = useRef();
<Formik
innerRef={formikRef}
...
/>
然后与
一起使用
onPress={() => formikRef.current?.resetForm()}
这是我使用 useFormik
钩子的方法。
import { useFormik } from "formik";
export default function LoginScreen() {
const formik = useFormik({
initialValues: {
email: ""
},
onSubmit: (val) => console.log(val),
});
return(
<TextInput
onChangeText={formik.handleChange("email")}
value={formik.values.email}
placeholder="Enter your email"
/>
{formik.touched.email && <ErrorText>{formik.errors.email}</ErrorText>}
<Button onPress={formik.handleSubmit}>Login</Button>
<Button onPress={formik.resetForm}>Clear</Button>
);
}
我知道您可以在 Formik 中使用 resetForm
来重置 onSubmit
中的表单。但是,有没有办法通过为其分配一个 ref 并以某种方式调用 rest 表单方法以编程方式重置它?
有一个名为 innerRef 的道具可以为 formik 表单制作 ref
<Formik
innerRef={(p) => (this.formik = p)}
/>
然后像这样使用它:
onPress={() => this.formik.resetForm()}
或使用功能组件:
const formikRef = useRef();
<Formik
innerRef={formikRef}
...
/>
然后与
一起使用onPress={() => formikRef.current?.resetForm()}
这是我使用 useFormik
钩子的方法。
import { useFormik } from "formik";
export default function LoginScreen() {
const formik = useFormik({
initialValues: {
email: ""
},
onSubmit: (val) => console.log(val),
});
return(
<TextInput
onChangeText={formik.handleChange("email")}
value={formik.values.email}
placeholder="Enter your email"
/>
{formik.touched.email && <ErrorText>{formik.errors.email}</ErrorText>}
<Button onPress={formik.handleSubmit}>Login</Button>
<Button onPress={formik.resetForm}>Clear</Button>
);
}