【发布时间】:2019-10-24 13:39:23
【问题描述】:
我正在使用 Formik 库,并且有一个简单的表单,其中包含一个复选框,我想在更改时提交:
<Formik
initialValues={{ toggle: false }}
validateOnChange={false}
validateOnBlur={false}
onSubmit={(values, { validateForm }) => {
validateForm().then(_errors => {
console.log(values);
});
}}
>
{({ values, handleChange, handleSubmit }) => (
<div>
<form onChange={handleSubmit}>
<label>
Toggle
<input
name="toggle"
type="checkbox"
checked={values.toggle}
onChange={handleChange}
/>
</label>
</form>
</div>
)}
</Formik>
由于某种原因,看起来输入在每次点击后都没有重新渲染,只有在每第二次点击之后才会重新渲染。因此复选框未更新 - 您必须单击两次才能更改(onChange 事件仅每第二次触发一次)
我可以通过添加 key 来强制它重新渲染,但这是一个 hack。
【问题讨论】: