我有一个自定义的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中也可以正常工作。试试吧!
答案 0 :(得分:1)
好的,我通过将Formik的onChange
处理程序绑定到自定义输入组件的onInput
事件来修复它。
function FieldInput({ field: { onChange, ...props } }) {
return <input onInput={onChange} {...props} />;
}
这是由于我怀疑React将onChange
视为onInput
,而Preact / Preact-compat不适用于该方法吗?