reactjs - Formik 在页面加载时验证初始值
问题描述
下面的代码在提交和文本框的 onFocusOut 时验证正常,我希望它触发验证首先使用初始值重新加载页面。
尝试过validateOnMount
,以及其他人,但没有奏效。
这里缺少什么?
const RoleValidationSchema = Yup.object().shape({
Adi: Yup.string()
.min(2, "En az 2 karakter olmalıdır")
.max(30, "En fazla 30 karakter olmalıdır")
.required("Gerekli!")
})
const Role = (props) => {
return (
<div>
<Formik
onSubmit={(values, { validate }) => {
debugger
validate(values);
alert("Submietted!")
props.handleFormSubmit()
}}
initialValues={{
Adi: "d"
}}
validationSchema={RoleValidationSchema}
validateOnMount={true}
validateOnChange={true}
validateOnBlur={true}
render={({ errors, touched, setFieldValue, ...rest }) => {
debugger
return (
<Form>
<Row>
<Col sm="12">
<Label for="Adi">Rol Adi</Label>
<FormGroup className="position-relative">
<Field
autoComplete="off"
id="Adi"
className="form-control"
name="Adi"
type="text"
/>
<ErrorMessage name="Adi">
{(msg) => (
<div className="field-error text-danger">{msg}</div>
)}
</ErrorMessage>
</FormGroup>
</Col>
<Tree dataSource={treeData} targetKeys={targetKeys} expandKeys={[]} onChange={onChange} />
</Row>
<button type="submit" className="btn btn-success" > Kaydet</button>
</Form>
)
}}
/>
</div>
)
}
解决方案
尝试将 enableReinitialize Prop 添加到您的 Formik 组件
<Formik
enableReinitialize
......
/>
推荐阅读
- .net - 如何操作 NuGet 包的依赖关系?
- c# - Json 反序列化在运行测试时似乎立即生效,但在调试测试时需要很长时间
- python - 将烧瓶 wtform 的默认日期设置为今天
- python - 使用 pySmartDL 继续下载
- terraform - 有条件地运行 terraform 模块
- python - 从主机上的 python 脚本在 docker 容器中运行 python 命令
- php - 生产 Laravel 8 上的“ob_flush():刷新缓冲区失败。没有要刷新的缓冲区”
- android - 如何更新 CompositeDateValidator 并将 CalendarConstraints 重置为已打开的 MaterialDatePicker
- spring-boot - @Bean 方法需要有条件地返回 null
- python - 有没有办法提高模型性能?