javascript - Formik React 使用 2 个按钮(提交和保存)提交表单 - 保存按钮不触发验证
问题描述
Formik 很新,我有一个简单的表单,它有验证。我需要有 2 个按钮,提交和保存按钮,它们大多会做同样的事情,但是,如果单击“保存”按钮,我希望验证被“禁用”,或者更确切地说,不再需要所有必填字段. 有什么想法可以实现这一目标吗?
下面的一些代码:
const initialValues = {
title: "",
description: ""
};
const validationSchema = Yup.object().shape({
title: Yup.string()
.max(50, 'You may only enter up to 50 characters')
.required('Required'),
description: Yup.string()
.max(200, 'You may only enter up to 200 characters')
.required('Required'),
})
const CreateForm = () => {
const handleCancel = () => {
alert("Cancelled!")
}
return (
<div>
<Formik initialValues={initialValues}
validationSchema={validationSchema}
onSubmit={(values) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
}, 3000)
}}
>
{props => (
<Form>
<CustomTextInput label="Title"
name="title" type="input" placeholder="Enter Title" />
<CustomTextInput label="Description"
name="description" type="input" placeholder="Description" />
<div>
<Button type="submit" variant="contained" color="primary">
Submit
</Button>
<Button type="submit" variant="contained" color="secondary" >
Save
</Button>
<Button variant="contained" color="default" onClick={handleCancel}>
Cancel
</Button>
</div>
</Form>
)}
</Formik>
</div>
)
}
export default CreateForm
解决方案
首先删除type="submit"
. 因为formik
会像提交一样理解它并验证它。第二个添加onClick
功能:
<Button
variant="contained"
color="secondary"
onClick={() => handleSave(props.values)} >Save</Button>
和:
const handleSave = (values) => {
// do what you want like on submit
}
推荐阅读
- python - 如何使用新鲜番茄模板将数据从 excel 文件导入和读取到 Python 电影中心
- amazon-web-services - API Gateway 中 AWS Firehose PutRecordBatch 的映射模板应该是什么样的?
- java - 当您在 Firebase 上使用 .setPersistenceEnabled(true) 时,真的需要 .addOnCompleteListener 吗?
- c++ - 这种使用联合的类型别名是否会调用未定义的行为?
- node.js - Node.js 如何压缩图像数组并强制浏览器下载
- amazon-ec2 - nfs 目录始终以只读方式挂载,但 /etc/fstab 具有 rw 选项
- c# - 在 TextBox 中只允许 1 个符号
- jenkins - Jenkins 客户端证书认证
- reactjs - 反应原生 panResponder 动画
- html - 表单操作未在提交时重定向