dra*_*rys 7 javascript reactjs yup react-hook-form
我将 Yup 与 React-hook-form 结合使用,并在 Yup 中具有以下架构
const validationSchema = Yup.object({
installation: Yup.string().nullable().required("Required"),
from_date: Yup.date()
.max(new Date(), "Cannot use future date")
.nullable()
.required("Required"),
to_date: Yup.date()
.min(Yup.ref("from_date"), "To Date cannot be before From Date")
.max(new Date(), "Cannot use future date")
.nullable()
.required("Required")
});
Run Code Online (Sandbox Code Playgroud)
当我在输入中键入日期时,验证工作正常,但日期以 格式返回2021-03-31T18:30:00.000Z,但是我希望日期以2021-03-31.
我将数据发送到 Django 后端服务器,并且只需要一个没有时区的 DateField。我该怎么做?
有没有什么办法可以转换没有时区的日期。如果我使用它,我可以让它工作Yup.string(),但是必要的验证将不起作用。
可能的解决方案想法(但需要帮助来理解如何去做)
我可以在 Yup 中编写一些自定义验证吗?如果可能的话我可以使用Yup.string()并仍然执行必要的验证
Yup.string()PS 这个问题有很多观点,但没有重要的评论或答案。我可以更改问题格式以使其更容易理解吗?
您应该编写一个快速函数,以便在进一步验证 yup 之前更改格式。为此,您可以使用date-fns助手。
import parse from "date-fns/parse";
function parseDateString(value, originalValue) {
return isDate(originalValue)
? originalValue // this make sure that a value is provided
: parse(originalValue, "yyyy-MM-dd", new Date());
}
Run Code Online (Sandbox Code Playgroud)
可以这样使用:
import { date, object } from "yup";
const today = new Date();
const validationSchema = Yup.object({
installation: Yup.string().nullable().required("Required"),
from_date: Yup.date()
.transform(parseDateString)
.max(new Date(), "Cannot use future date")
.required("Required"),
to_date: Yup.date()
.min(Yup.ref("from_date"), "To Date cannot be before From Date")
.max(new Date(), "Cannot use future date")
.required("Required")
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8544 次 |
| 最近记录: |