【发布时间】:2020-09-06 22:42:27
【问题描述】:
问题 -> 我正在尝试进行验证,以在切换语言时更改 Formik 错误消息,但仅当我点击提交按钮调用 "formik.onSubmit" 或更新中的字段时,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 仅在语言更改时调用?
【问题讨论】:
-
我不相信有任何内置 - 但你可以编写一个计时器来轮询属性并引发你自己的事件
-
我被困在同一个问题上,我不确定这个链接是否有帮助:github.com/formium/formik/issues/1591
-
medium.com/code-divoire/… github.com/formium/formik/issues/1395 这两个链接帮助我解决了这个问题。
标签: javascript reactjs internationalization formik