如何在Zod中对通用字段进行转换/预处理?咨询trim应用位置
Zod字段trim处理的正确位置
你现在用的textfield工具函数里其实已经在最开头加了string().trim(),这一步已经会自动对输入值做trim处理,并且验证通过后返回的就是trim后的值——Zod的trim()方法本身就会修改最终输出的字符串,不需要额外用transform或preprocess。
不过要注意代码里的两个细节:
- 如果你是直接用
TextField类来创建字段(而非textfield函数),那类的构造函数里只是初始化了string(),没加trim,需要改成:constructor(fieldName: string) { super(fieldName, string().trim()); } textfield函数里的错误提示有个bug:${this.fieldName}这里的this在函数里是undefined,应该改成${fieldName},不然会报错。
另外再明确下:Zod的trim()属于链式验证方法,执行时会先对输入字符串做trim,再进行后续的min/max验证,同时最终解析出的值就是trim后的结果,完全满足你“保留处理后的值”的需求,不需要额外用transform(除非你要做更复杂的自定义处理)。
比如现在你的first_name字段通过textfield创建后,用户输入" John ",Zod会先trim成"John",再验证长度,最终返回的就是"John"。
内容的提问来源于stack exchange,提问作者winnie
相关产品推荐
相关产品推荐

