如何使用 Formik 在 onchange 中调用两个函数
How to call two function in onchange using Formik
问题:
我在我的 Formik 表单中输入了 select 作为反应。我的代码如下
<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 props.handleChange,另一个是自定义状态更新。
我做了这样的事情。
onChange={e=>{props.handleChange("offenceId");this.handleOffence(props.values.offenceId)}}
但它只调用了第二个自定义函数,但没有更改 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>
你也必须传递事件,否则你的回调不知道新值是什么。我也不会指望 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>
您还可以为您的 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 表单中输入了 select 作为反应。我的代码如下
<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 props.handleChange,另一个是自定义状态更新。
我做了这样的事情。
onChange={e=>{props.handleChange("offenceId");this.handleOffence(props.values.offenceId)}}
但它只调用了第二个自定义函数,但没有更改 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>
你也必须传递事件,否则你的回调不知道新值是什么。我也不会指望 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>
您还可以为您的 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>