【发布时间】:2021-09-17 18:00:57
【问题描述】:
在transformErrors回调中映射错误时,我需要知道有问题的输入的实际值。
我需要这个来创建一个系统,用于将多种现有格式组合成新的复合格式。我想将输入值与每种“基本”格式进行匹配,并为失败的格式显示错误。不幸的是,allOf method of composing formats 对我不起作用,原因是我的项目非常具体。
我尝试通过柯里化和直接读取数据将表单数据注入我的tranformErrors 回调:
import _ from 'lodash'
import Form from '@rjsf/core'
const makeTransformErrors = formData => errors => {
errors.forEach(error => {
if (error.name === 'format') {
const value = _.get(formData, error.property)
// ...
}
})
}
const WrapedForm = (formData, ...rest) => {
const transformErrors = makeTransformErrors(formData)
return (
<Form
transformErrors={transformErrors}
formData={formData}
{...rest}
/>
)
}
但是这种方式value 落后于表单的实际状态,这是我所期待的。不幸的是,即使我不直接将formData 传递给makeTransformErrors,这也不起作用,而是我传递了一个包含formData 的对象并直接在Forms onChange 中直接对其进行变异,这是我期望的.
还有哪些其他可能的访问字段值的方法?也许可以配置(或patch)ajv 验证器以将值附加到验证错误的参数?
【问题讨论】:
标签: reactjs validation jsonschema ajv react-jsonschema-forms