javascript - 语言更改时是否调用了 i18n 函数?
问题描述
"formik.onSubmit"
问题->我正在尝试进行验证,以在切换语言时更改 Formik 错误消息,但仅当我点击提交按钮调用或更新表单中的字段时,Formik 才会自动更改错误,因此错误消息当我输入时得到更新"formik.handleChange"
。
尝试-> 所以我尝试使用useEffect
钩子来更新 Formik 错误:
const [errors, setErrors] = useState(formik.errors);
useEffect(() => {
setErrors(formik.errors);
}, [formik.errors]);
<Error>{errors.email}</Error>
但它不起作用,只有当我单击提交按钮或更新字段时才会发生变化。所以我的第二次尝试是在语言更改时强制单击提交按钮:
useEffect(() => {
if (formik.errors.email !== undefined)
document.getElementById('submitButton').click();
}, [i18n.language]);
useEffect
它起作用了,但是当我第一次渲染页面时,即使没有触摸表单,它也会调用渲染错误,所以它useEffect
的工作原理是ComponentDidMount
和ComponentDidUpdate
(我唯一想要的)。那么,是否有 i18n 的功能或道具,我可以使用 useEffect 仅在语言更改时调用?
解决方案
我刚刚检查了formik.errors
对象是否为空,因此它阻止了单击事件,如果不是,则更改错误语言:
useEffect(() => {
if (Object.entries(formik.errors).length !== 0)
document.getElementById('submitButton').click();
}, [i18n.language]);
推荐阅读
- javascript - 将新的 json 数据合并到 d3.js 和 cola.js 中的现有图表
- javascript - 如何实现递增计数器的类函数?
- build - Bitbucket 拉取请求添加重建按钮
- javascript - 从按钮传递事件:event.target undefined; json stigify 给出 {"isTrusted":true}?
- javascript - javascript新的正则表达式动态
- python-3.x - 如何减少 Python 的 itertools.product 的内存消耗和处理时间?
- android - 收到通知时 onSaveInstanceState 后无法执行此操作-Android
- javascript - 如何根据表中的另一个选择选项更改选项?
- node.js - Express 服务器在通过 Postman 测试时没有响应并崩溃
- javascript - Javascript,异步问题所需的解决方案