我只是想创建一个自定义 Formik
<Field />
。它是一个 <input type = file />
,不透明度=0,并且取决于 values
我对我的 <Error />
组件和 <input type = text />
进行样式设计。 values.photo
还可以。问题是触摸永远不会成为现实,所以我无法显示我的 <Error />
组件。你能解释一下出了什么问题吗?
https://codesandbox.io/s/purple-violet-qgxr3?file=/src/components/FileInput.js
在您的文件输入组件中只需添加以下内容:
form.setTouched({...form.touched,[field.name]: true });
setTouched 接受字段对象,
field.name
是文件输入名称。
Formik 提供了一个名为
setFieldTouched
的函数,可用于手动设置特定字段的 touched
值
setFieldTouched: (field: string, isTouched?: boolean, shouldValidate?: boolean)
当您通过监听 onChange 事件处理文件输入时。 一旦调用 onChange 方法,您就可以通过调用将您的字段标记为 Touched .markAsTouched() 这样如果条件有效就会显示错误。