是的 - 在错误消息中输出字段值

Mik*_*ike 5 javascript yup

我试图在错误消息中输出字段值,执行如下操作:

const schema = commonSchema.concat(Yup.object().shape({
  name: Yup
    .string()
    .oneOf(
      [Yup.ref('oldName'), null],
      `Name must match oldName - ${Yup.ref('oldName').getValue()}`
    )
    .required('name'),
}));
Run Code Online (Sandbox Code Playgroud)

这给了 TypeError:无法读取未定义的属性“父”。在错误消息中访问字段值的正确方法是什么?

小智 3

我用来将值放入错误消息的技巧是使用 yup.lazy 方法。

yup.lazy((value: any) => Schema): Lazy
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它看起来像这样,

const schema = commonSchema.concat(Yup.object().shape({
  name: Yup.lazy((value) => 
    Yup.string()
    .oneOf(
      [Yup.ref('oldName'), null],
      `Name must match oldName - ${value}`
    )
    .required('name')),
}));
Run Code Online (Sandbox Code Playgroud)