在transformErrors回调中映射错误时,我需要知道相关输入的实际值。
我需要这个来创建一个系统,用于将多种现有格式组合成新的复合格式。我想将输入值与每种“基本”格式相匹配,并为失败的格式显示错误。allOf
不幸的是,由于我的项目非常具体的原因,编写格式的方法对我不起作用。
tranformErrors
我尝试通过currying和直接读取数据将表单数据注入我的回调:
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
,这是我期望的。
访问字段值的其他可能方式是什么?也许可以配置(或修补) ajv 验证器以将值附加到验证错误的参数?