无法将 'touched' 设置为 true

Can't set 'touched' to true

我只是想创建一个自定义 Formik <Field />。它是一个 <input type = file />,不透明度 =0,并且取决于 values 我设计我的 <Error /> 组件和 <input type = text />values.photo 没问题。问题是 touched 永远不会变成真的,所以我无法显示我的 <Error /> 组件。你能解释一下哪里出了问题吗? https://codesandbox.io/s/purple-violet-qgxr3?file=/src/components/FileInput.js

在您的文件输入组件中添加:

form.setTouched({...form.touched,[field.name]: true });

setTouched 获取字段的对象,field.name 是文件输入名称。

当您通过监听 onChange 事件处理文件输入时。 一旦调用了 onChange 方法,您就可以通过调用将字段标记为 Touched .markAsTouched() 以便在验证条件时显示错误。