我有一个自定义 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
如果我只使用 vanilla,它在 Preact 中也能正常工作 <input />
元素。试试吧!
最佳答案
好的,我通过将 Formik 的 onChange
处理程序绑定(bind)到我的自定义输入组件的 onInput
事件来修复它。
function FieldInput({ field: { onChange, ...props } }) {
return <input onInput={onChange} {...props} />;
}
这是因为我怀疑 React 将 onChange
视为 onInput
并且不知何故 Preact/Preact-compat 不能很好地处理它?</p>
关于javascript - Preact 和 Formik : Fail to trigger validation on change in a custom Field component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024843/