我有一个formik形式在React Native代码如下。完整的可运行的链接可以查看:here
当前行为:
只能使用handleSubmit
进行验证,不能用于处理进一步操作请注意,如果handleSubmit
检测到任何验证错误,则不会触发onSubmit
<Button onPress={handleSubmit} style={styles.button}>
Submit
</Button>
预期解决方案:
尝试提交后验证失败时调用的生命周期事件(例如:onValidationError
),其中我可以访问所有输入确认错误道具以用于进一步的动作。
例如:我想处理一些事情(如在验证失败时弹出警报或滚动到第一条错误消息)
代码应该是像follow这样的,或者任何其他的方法都可以接受。只要我能处理验证错误发生时的事件。
<Formik
onSubmit={values => {
alert(JSON.stringify(values, null, 2));
Keyboard.dismiss();
}}
onValidationError={errorValues => {
// any action here
// note that onValidationError is not a built in function
// but it would be best if it can be achieved this way
// else any other equivalent solution also can be accepted
}}
validationSchema={validationSchema}>
"尝试过什么"
我试过在这里集成2个解决方案。但没能让它工作。
https://github.com/jaredpalmer/formik/issues/1019
https://github.com/jaredpalmer/formik/issues/1484
6条答案
按热度按时间r1zk6ea11#
您可以在
<form>
的onsubmit
事件上使用isValid
prop(来自<Formik>
的渲染prop),方法是绕过此处的逻辑,如(文档)您可以从formik的render props中访问
isValid
prop我也做了代码和框,你可以在这里查看工作示例-https://codesandbox.io/s/trusting-jennings-7wq0f
注意:在formik存储库或任何地方的任何问题上都没有正式提到这一点,但这是在
<form>
的onsubmit
事件上截取submit
操作的自定义方式希望这对你有帮助!
lfapxunr2#
有非常简单方法可以做到这一点。
在你的提交按钮onClick方法上,你可以像这样定义一个方法;
https://formik.org/docs/guides/validation#validationschema
vlurs2pr3#
通过使用useFormikContext的自定义组件可以实现在表单提交失败时显示通知:
并这样使用它:
eblbsuwk4#
您可以使用
validate
方法来完成此操作。只需确保返回error对象,以便表单可以处理验证。nwsw7zdq5#
如果您没有使用
<Formik>
组件,而是使用了reactstrap
库中带有useFormik
挂钩的<Form>
之类的组件,则可以在调用formik的handleSubmit事件时检查它,如下所示第一个
pdkcd3nj6#
我想上面的答案可以解决你的问题,最近我用
react hook forms
库创建了一些表单(也有一些复杂的表单)。这比formik和redux表单好。我建议你试一次,它很容易即插即用,有很多动态特性和验证(包括模式)。https://react-hook-form.com/