使用 Yup 和 Typescript 的动态验证消息

Mic*_*rds 6 javascript typescript reactjs yup

我正在尝试使用 Yup 创建一些自定义错误消息,以确定用户的电子邮件地址是否正在使用。

我创建了以下承诺来尝试捕获服务器通信错误:

.test(
{
    name: 'Email Check',
    test: value => {
        if (value.includes("@")) {
            return new Promise<yup.ValidationError>((resolve, reject) => {
                let client = new RegistrationApi();
                client.emailCheck(value,
                    x => x ? resolve(undefined) : resolve(new yup.ValidationError("E-mail address already used", value, "")),
                    () =>resolve(new yup.ValidationError("Failed to contact server", value, "")),
                    undefined);
            });
        }
        else {
            return false;
        }
    }
}),
Run Code Online (Sandbox Code Playgroud)

返回验证错误不会导致显示任何错误消息。我究竟做错了什么?我尝试使用 createError 方法,该方法似乎是示例中的详细信息,但在这种情况下似乎不存在。

jap*_*ott 0

关于你的代码,你会想要reject你的 Promise,而不是resolve它。

一般来说; 您需要向yup 模式的验证函数返回一个承诺。或者您可以编写特定的异步测试