我有这样一段代码。我想根据用户的区域设置添加错误消息,但是会抛出错误,如果字段填写不正确也会抛出错误
[缺少“en.login.emailRequiredError”翻译] [缺少“en.login.passRequiredError”翻译]
const schema = yup.object().shape({
email: yup
.string()
.email(i18n.t('login.emailSpellError'))
.required(i18n.t('login.emailRequiredError')),
password: yup
.string()
.matches(/^((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15})$/i, i18n.t('login.passSpellError'))
.required(i18n.t('login.passRequiredError')),
});
i18n.t('login. passRequiredError')在我把它放到一个render方法中检查时工作正常,但在yup中不工作。有什么建议吗?提前感谢
4条答案
按热度按时间sqxo8psd1#
在架构中,替换:
与
然后在你的render方法中
这假定您的翻译文件有一个如下所示的条目:
这里的目标是将t()方法移动到render方法中,并在那里进行所有转换。
prdp8dxp2#
是验证方法,
在render方法中,
转换文件
8ulbf1ek3#
一个解决方案是创建一个返回验证模式的函数,然后在组件中调用该函数并存储结果,这样就可以保证验证消息的翻译是动态计算的。
这里的另一个优势是您可以在消息源进行翻译。
gajydyqb4#
我已经为这种方法创建了一些自定义钩子
这一个用于在更改应用程序语言时刷新架构内的错误消息
这一项用于在应用程序组件本地化错误消息中设置全局
还使用了组件内部的架构和React Hook Form
和模式