使用 yup 和 formik 进行密码验证

新手上路,请多包涵

如何进行密码验证,同时将错误传递给不同的变量?

IE

 password: Yup.string().required("Please provide a valid password"),
passwordMin: Yup.string().oneOf([Yup.ref('password'), null]).min(8, 'Error'),
passwordLC: Yup.string().oneOf([Yup.ref('password'), null]).matches(/[a-z]/, "Error" )
passwordUC: Yup.string().oneOf([Yup.ref('password'), null]).matches(/[A-Z]/, "Error" )

我无法获得密码变量的绑定以与密码对象绑定

原文由 Strahinja Ajvaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

只是为了详细说明 efleurine 的回答。

您不需要将每个验证都存储在同一个字段中——您可以将它们链接起来以获得完整的验证。

 password: Yup.string()
  .required('No password provided.')
  .min(8, 'Password is too short - should be 8 chars minimum.')
  .matches(/[a-zA-Z]/, 'Password can only contain Latin letters.')

请注意您如何仍然可以为每次失败指定单独的消息。

此外,为了使绑定生效,请确保您要绑定的表单输入具有适当的 name 属性 - 在本例中为 password

原文由 Seva 发布,翻译遵循 CC BY-SA 4.0 许可协议

希望这可以帮助:

 import * as Yup from 'yup';

validationSchema: Yup.object({
  password: Yup.string().required('Password is required'),
  passwordConfirmation: Yup.string()
     .oneOf([Yup.ref('password'), null], 'Passwords must match')
});

原文由 Harshal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题