Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Yup模式中允许‘null’作为默认值,同时仍然不允许提交‘null’?

如何在Yup模式中允许‘null’作为默认值,同时仍然不允许提交‘null’?
EN

Stack Overflow用户
提问于 2022-06-12 23:40:19
回答 1查看 813关注 0票数 3

我定义了这个Yup模式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export const ExpectedIncomeSchema = object({
  newIncome: number()
    .required()
    .typeError()
    .min(0)
    .integer(),
  fromDate: date()
    .required()
    .typeError()
    .min(startOfToday()),
});

export type ExpectedIncomeValues = Asserts<typeof ExpectedIncomeSchema>;

现在,我试图在react-hook-form中使用此模式进行验证,并遇到了一个问题,即不允许将defaultValues设置为null""。很明显,因为类型记录说这里唯一允许的类型是numberDate,但我不想将这些值默认为有效值,比如0或随机选择的日期。我希望这些字段最初是空的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const methods = useForm<ExpectedIncomeValues>({
  resolver: yupResolver(ExpectedIncomeSchema),
  defaultValues: {
    newIncome: null, // <-- only number allowed, so type error in both Typescript and validation
    fromDate: null, // <-- only Date allowed, so type error in both Typescript and validation
  },
);

怎么才能让Yup和打字稿在这里都开心呢?在设置表单时,我希望字段是可空的,但在模式验证之后则不需要。

对此,你有什么聪明的地方吗?还是我必须这样做?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export type Nullable<T> = {
  [P in keyof T]: T[P] | null;
};


export type ExpectedIncomeFormValues = Nullable<ExpectedIncomeValues>;

但是,这方面的一个问题是,错误消息将是“类型错误”消息,而不是我在本例中需要的“必需”消息。

EN

回答 1

Stack Overflow用户

发布于 2022-06-14 04:58:39

下面的内容似乎有效,但不确定它是否真的正确。我意识到yup有两种类型的帮助,TypeOfAsserts.通过将.nullable(true)添加到模式中,第一个将允许null,而第二个将不允许。这就是我想要的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const schema = object({
  newIncome: number()
    .required()
    .nullable(true)
    .min(0)
    .integer(),
  fromDate: date()
    .required()
    .nullable(true)
    .min(startOfToday()),
});


type ValuesWithNull =
  TypeOf<typeof ExpectedIncomeSchema>;

type ValuesWithoutNull =
  Asserts<typeof ExpectedIncomeSchema>;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72599238

复制
相关文章
Python中根据时间自动创建文件夹
Python中根据时间自动创建文件夹 import shutil import os def remove_file(old_path, new_path): print(old_path) print(new_path) filelist = os.listdir(old_path) #列出该目录下的所有文件,listdir返回的文件列表是不包含路径的。 print(filelist) for file in filelist: src = os.
青阳
2021/03/31
1.4K0
查找目录中同名的文件或者文件夹
查找Linux、MAC下同名文件和文件夹。比如 Folder1和folder1 、filename1和Filename1。
用户3135539
2018/09/12
3.9K0
在WordPress媒体库中创建文件夹
WordPress默认后台媒体管理功能比较弱,不能整理不同类型媒体文件,如果您上传了大量媒体文件,都混杂在一起,无法管理,我们可以通过WordPress丰富的插件获得更好的媒体目录。
星哥玩云
2022/06/11
2.6K0
在WordPress媒体库中创建文件夹
WordPress自动在uploads文件夹内创建子文件夹
在开发主题或者插件的时候,经常要创建一个自定义的文件夹,我经常使用的一种方法就是在插件或主题安装的时候,先让程序自动到某个文件夹下先检测这个文件夹是否存在,如果不存在就自动创建一个文件夹。 下面的代码演示了如何在uploads文件夹中自动地创建一个自定义文件夹: function myplugin_activate() { $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = $upload_dir . '/my
Jeff
2018/01/19
1.7K0
spark读取多个文件夹(嵌套)下的多个文件
在正常调用过程中,难免需要对多个文件夹下的多个文件进行读取,然而之前只是明确了spark具备读取多个文件的能力。
sparkexpert
2022/05/07
3.2K0
使用Power Automate在Onedrive for Business中创建空文件夹
在Onedrive for Business(以下简称ODB)中创建一个文件是非常轻松的一件事:
陈学谦
2023/01/03
3.7K0
使用Power Automate在Onedrive for Business中创建空文件夹
Mac在文件夹/终端中打开终端/文件夹
如图,想要在终端中到该文件夹,自然而然的办法是cd /usr/share/doc/postfix/html, 但其实还有更简洁的办法,即如上安装Go2Shell或cd to插件
fliter
2023/06/18
1K0
Mac在文件夹/终端中打开终端/文件夹
在 Linux 中重命名文件夹中的所有文件
在Linux系统中,有时候我们需要批量重命名文件夹中的所有文件,以便更好地组织和管理文件。本文将详细介绍几种在Linux中重命名文件夹中所有文件的方法,包括使用命令行工具和脚本等方式。
网络技术联盟站
2023/06/08
5.1K0
在 Linux 中重命名文件夹中的所有文件
在 MSBuild 编译过程中操作文件和文件夹(检查存在/创建文件夹/读写文件/移动文件/复制文件/删除文件夹)
本文整理 MSBuild 在编译过程中对文件和文件夹处理的各种自带的编译任务(Task)。
walterlv
2023/10/22
3650
如何在Linux中创建文件?多个文件创建操作命令。
如果文件file1.txt不存在,则上面的命令将创建该文件,否则,它将更改其时间戳。
用户5005176
2021/08/10
39.2K0
python 遍历文件夹 查找大文件
import os path = "C:/" #文件夹目录 def eachFile(filepath): fileNames = os.listdir(filepath) # 获取当前路径下的文件名,返回List for file in fileNames: newDir = filepath + '/' + file # 将文件命加入到当前文件路径后面 if os.path.isfile(newDir): # 如果是文件 if os.path.splitext(newDir)[1] == ".txt": # 判断是否是txt size=os.path.getsize(newDir) size=size/(1024*1024) if size>100: print(newDir,size) else: eachFile(newDir) #如果不是文件,递归这个文件夹的路径
用户5760343
2019/07/07
2.8K0
Centos8中如何更改文件夹中多个文件的扩展名
在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell 脚本提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。以下是脚本内容:
用户7639835
2021/09/01
3.7K0
Centos8中如何更改文件夹中多个文件的扩展名
在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell  提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。以下是 内容:
用户1685462
2021/09/05
3.3K0
Centos8中如何更改文件夹中多个文件的扩展名
在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell 脚本提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。以下是脚本内容:
用户9236362
2021/11/30
4K0
mac 在 home 目录下创建文件夹
编译 /etc/auto_master 文件,注释掉或者移除以 /home 开头的那一行,保存。
一个会写诗的程序员
2020/11/26
3.2K0
查找修改时间在指定区间的文件并打包
#!/bin/bash # find file and tar # joyousphper@gmail.com # find_and_tar.sh read -p "Please enter a search path (eg:/root/) >" search_path if [ -d $search_path ];then echo "find path $search_path" else echo "error: $search_path is not a directory" exit 0
苦咖啡
2018/05/08
1.3K0
在pycharm中如何将django中多个app放到同个文件夹apps处理
新建apps文件夹后mark为source目录,然后在Setting中import方式为
Ewdager
2020/07/14
2K0
问与答87: 如何根据列表内容在文件夹中查找图片并复制到另一个文件夹中?
Q:如何实现根据列表内容查找文件夹中的照片,并将照片剪切或复制到另外的文件夹?如下图1所示,在列C中有一系列身份证号。
fanjy
2020/09/25
2.9K0
问与答87: 如何根据列表内容在文件夹中查找图片并复制到另一个文件夹中?
Linux下在文件夹所有文件中查找相关内容
grep是在使用Linux时经常会用到的一个命令了,这个命令平时大都主要用来进行对一段输出的关键字定位,但是这个命令也可以通过使用某些参数来达到文件夹文件内容遍历的效果
impressionyang
2020/08/26
35.9K0
点击加载更多

相似问题

Applescript:在多个文件夹中创建新的文件夹结构

12

在熊猫中查找最接近给定时间的DataFrame行

30

Applescript:创建文件夹/子文件夹并移动多个文件

21

AppleScript查找包含特定文件的文件夹

14

创建文件夹Applescript

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文