如何使用Formik调用onChange中的两个函数 [英] How to call two function in onchange using Formik

查看:0
本文介绍了如何使用Formik调用onChange中的两个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:

我在Reaction中选择了Formik表单中的输入。我的代码如下

<select
    className="form-control offence-select"
    id="exampleFormControlSelect1"
    value={props.values.offenceId}
    onChange={props.handleChange("offenceId")}
    onBlur={props.handleBlur("offenceId")}
 >
     <option value={0}>Select Offence</option>
         {this.renderOption()}
 </select>

我想要的是在onChange内调用两个函数,一个函数是formik pros.handleChange,另一个是自定义状态更新。

我做了这样的事情。

onChange={e=>{props.handleChange("offenceId");this.handleOffence(props.values.offenceId)}}

但它只调用第二个定制函数,但不会更改SELECT的字段值。我试了很多,想找出解决这个问题的办法,但我做不到。有人可以通过更正我调用函数的方式来帮助我解决这个问题吗?谢谢。

推荐答案

您也必须传递事件,否则您的回调不知道新值是什么。我也不会指望props.values立即获得新值,这就是为什么我会在第二个函数调用中传递来自Event的值。

<select
    className="form-control offence-select"
    id="exampleFormControlSelect1"
    value={props.values.offenceId}
    onChange={(e) => {
      props.handleChange("offenceId")(e);
      this.handleOffence(e.currentTarget.value);
    }}
    onBlur={props.handleBlur("offenceId")}
 >
     <option value={0}>Select Offence</option>
         {this.renderOption()}
 </select>

您还可以为SELECT输入命名,如下所示,这将简化回调调用:

<select
    name="offenceId"
    className="form-control offence-select"
    id="exampleFormControlSelect1"
    value={props.values.offenceId}
    onChange={(e) => {
      props.handleChange(e);
      this.handleOffence(e.currentTarget.value);
    }}
    onBlur={props.handleBlur}
 >
     <option value={0}>Select Offence</option>
         {this.renderOption()}
 </select>

这篇关于如何使用Formik调用onChange中的两个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆