是的验证检查是否为空

장수환*_*장수환 6 yup

const validationSchema = Yup.object().shape({
    newPassword: Yup.string().min(8, 'Password must be at least 8 characters');
});
Run Code Online (Sandbox Code Playgroud)

我只想在 newPassword 字段不为空时进行验证检查。我怎么办?

Joa*_*gel 13

替代使用测试:

const validationSchema = Yup.object().shape({
    newPassword: Yup.string().test(
        'empty-or-8-characters-check',
        'Password must be at least 8 characters',
        password => !password || password.length >= 8,
    ),
});
Run Code Online (Sandbox Code Playgroud)


Dip*_* KC 11

解决这个问题有不同的方法。

使用测试

const validationSchema = Yup.object().shape({
    newPassword: Yup.string().test('empty-check','Password must be at least 8 characters',password=>password.length==0
Run Code Online (Sandbox Code Playgroud)

使用时

const validationSchema = Yup.object().shape({
     newPassword: Yup.string().when('newPassword',{
            is:(password)=>password.length>0
            then: Yup.string().min(8, 'Password must be at least 8 characters');
});
Run Code Online (Sandbox Code Playgroud)

  • 使用“when”方法不再起作用,因为它是循环依赖 (6认同)

Sha*_*hko 10

替代使用trim()

const validationSchema = Yup.object().shape({
    newPassword: Yup.string().trim().required("Password must be at least 8 characters"),
  });
Run Code Online (Sandbox Code Playgroud)


小智 7

我自己解决这个问题的方法是首先添加 .nullable() 然后将 .transform() 空字符串添加为 null。

const validationSchema = Yup.object().shape({
    newPassword: Yup
        .string()
        .nullable()
        .transform((v, o) => (o === '' ? null : v))
        .min(8, 'Password must be at least 8 characters')
});
Run Code Online (Sandbox Code Playgroud)