Reactjs 如何使用Formik调用onchange中的两个函数

Reactjs 如何使用Formik调用onchange中的两个函数,reactjs,formik,Reactjs,Formik,问题: 我在react中选择了Formik表单中的输入。我的代码如下 <select className="form-control offence-select" id="exampleFormControlSelect1" value={props.values.offenceId} onChange={props.handleChange("offenceId")} onBlur={props.handleBlur("offenceId")}

问题:

我在react中选择了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>
但它只调用第二个自定义函数,但不更改select的字段值。我试图找出解决这个问题的办法,但没有成功。有人能帮我纠正调用函数的方式来解决这个问题吗?谢谢。

试试看:

<select
    className="form-control offence-select"
    id="exampleFormControlSelect1"
    value={props.values.offenceId}
    onChange={() => {
      props.handleChange("offenceId");
      this.handleOffence(props.values.offenceId);
    }}
    onBlur={props.handleBlur("offenceId")}
 >
     <option value={0}>Select Offence</option>
         {this.renderOption()}
 </select>
{
道具手变(“offenceId”);
这个.handleOffence(props.values.offenceId);
}}
onBlur={props.handleBlur(“offenceId”)}
>
选择冒犯
{this.renderOption()}

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

<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>
{
道具手柄更换(“offenceId”)(e);
此.处理违规(如当前目标值);
}}
onBlur={props.handleBlur(“offenceId”)}
>
选择冒犯
{this.renderOption()}
您还可以为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>
{
道具.手柄更换(e);
此.处理违规(如当前目标值);
}}
onBlur={props.handleBlur}
>
选择冒犯
{this.renderOption()}

从外观上看,我猜是道具。handleChange是一个返回函数的函数。因此,当在
onChange
处理程序中手动调用它时,它是否应该类似于
{e=>{props.handleChange(“offenceId”)(e.target.value);}
<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>