javascript - Preact 和 Formik : Fail to trigger validation on change in a custom Field component

标签 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

如果我只使用 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/

相关文章:

javascript - 传递参数 jquery.load

javascript - 在相应的选择器上显示/隐藏多个选择器

reactjs - Storybook + formik,控件不显示

reactjs - 是的(使用 formik 和 react)——无法验证数组长度

javascript - 什么时候不使用 Formik 的 FastField?

javascript - 将 JSON 字符串转换为对象并显示为 HTML 表格

javascript - 如何在表格布局中从中心过渡宽度/高度

javascript - react-native-router-flux 具有替换、重置和刷新功能的刷新组件

reactjs - React Redux 组件不更新

javascript - Ipify 被 Cors 阻止。我怎样才能获得允许?