无法将“touched”设置为true

问题描述 投票:0回答:3

我只是想创建一个自定义 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

javascript reactjs formik yup
3个回答
17
投票

在您的文件输入组件中只需添加以下内容:

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

setTouched 接受字段对象,

field.name
是文件输入名称。


0
投票

Formik 提供了一个名为

setFieldTouched
的函数,可用于手动设置特定字段的
touched

setFieldTouched: (field: string, isTouched?: boolean, shouldValidate?: boolean)

-2
投票

当您通过监听 onChange 事件处理文件输入时。 一旦调用 onChange 方法,您就可以通过调用将您的字段标记为 Touched .markAsTouched() 这样如果条件有效就会显示错误。

© www.soinside.com 2019 - 2024. All rights reserved.