是否有办法将状态设置到superRefine函数或zod模式调用的钩子中?到目前为止,当zod模式调用设置状态的钩子时,我得到了错误:
未捕获(承诺中)TypeError:无法读取位于异步对象的async_executeSchema(createFormControl. ts:381:1)的zod. ts:77:1的n(zod. ts:15:1)处未定义(读取"长度")的属性。onChange(createFormControl. ts:718:1)
这正常吗,有什么办法吗
Zod版本:3.21.2
PS:如果你需要Codesandbox,请告诉我
我试过在superRefine方法和zod superRefine函数调用的自定义钩子中设置状态,但我得到了同样的错误。在钩子中,我需要调用一个axios调用来获取一些日期并将它们设置为状态,所以如果你能建议我另一种解决方案,或者如果我做错了什么,我将不胜感激!
1条答案
按热度按时间u5rb5r591#
我已经在使用await了,问题是state是在嵌套函数中调用的,所以我不能在zod中调用setState,也不能在zod调用的自定义钩子中调用setState。在用户编译了一个特定的字段onBlur之后,它被称为axios调用,如果这个调用运行良好,则执行某个操作,但如果它给出错误,则在字段中设置一个错误,问题是,每次我设置错误,如果用户提交表单或关注同一字段,然后焦点离开,错误会消失,我想要的是,如果值没有改变,也保持错误如果表单提交了,但值仍然相同,我需要看到错误并阻止用户提交表单。