【发布时间】:2019-10-08 21:18:14
【问题描述】:
我有一个关于 formik 的问题。基本上,我将有一个表格列出所有有错误的表格的 ID。当用户单击表单的 Id 时,它将显示表单本身。要求是在呈现表单时也应该显示错误。有谁知道如何用 Formik 做到这一点?此外,如果用户编辑字段,则字段验证应该正常工作。
我把代码框链接放在这里。 https://codesandbox.io/s/pensive-brattain-yyls2。基本上我希望当表单出现时我应该看到错误,而不仅仅是当用户离开该字段或更改它时。谢谢。
import { Formik, Field, Form } from "formik";
import { TextField } from "formik-material-ui";
class Post0 extends React.Component {
validateEmptyName(value) {
if (!value) {
return "Invalid Name";
}
}
render() {
return (
<div>
<Formik
initialValues={{
email: "",
animal: ""
}}
onSubmit={values => {
this.props.nextStep(values);
}}
render={({ values, isSubmitting }) => (
<Form>
<Field
name="email"
type="email"
value={values.email}
component={TextField}
variant="outlined"
validate={this.validateEmptyName}
/>
<Field
name="animal"
value={values.animal}
component={TextField}
variant="outlined"
/>
<button type="submit">Submit</button>
</Form>
)}
/>
</div>
);
} }
【问题讨论】:
-
我能问一下您为什么要验证您知道将为空的表单吗?简单地指出该字段为必填项可能更有意义、更易于实施且更具视觉吸引力。
-
嗨@RutherfordWonkington,很抱歉造成混乱,这只是一个例子。 initialStates 不能为空。例如,“电子邮件”=“”和“动物”=“猫”。但是当我显示表格时,我想看到那里显示的错误。这里的用例是有一个带有验证错误表单 ID 的表。当用户点击一个 ID 时,应该会显示带有验证错误的表单。谢谢
-
啊。你现在的结构可能很难。 FormikProps 有一个
validateForm方法,但是在子渲染函数中调用它会触发一个无限循环。此外,由于您使用库组件作为接受 Formik 道具的输入,因此您需要确保字段将显示验证消息而无需先被触摸。