Preact&Formik:无法在自定义字段组件中的更改上触发验证

时间:2019-07-14 05:27:18

标签: javascript reactjs formik preact

我有一个自定义的input组件:

function Input({ field }) {
  return <input {...field} />;
}
在Formik的<Field />组件中使用的

<Field name="subject" component={Input} />

还有<Formik />组件上的验证功能:

<Formik
     validate={validateField}
     ...

问题在于Input上的每次更改都不会触发我的验证功能。

查看此代码和框以进行复制: https://codesandbox.io/s/vigilant-elbakyan-y29hh

奇怪的是,相同的代码在React应用中可以正常工作:https://codesandbox.io/s/affectionate-morning-vij2i

如果我仅使用香草<input />元素,它在Preact中也可以正常工作。试试吧!

1 个答案:

答案 0 :(得分:1)

好的,我通过将Formik的onChange处理程序绑定到自定义输入组件的onInput事件来修复它。

function FieldInput({ field: { onChange, ...props } }) {
  return <input onInput={onChange} {...props} />;
}

这是由于我怀疑React将onChange视为onInput,而Preact / Preact-compat不适用于该方法吗?