Skip to content

Commit a7b7d7f

Browse files
Fixes form reinitialization on language change (processing#3229)
1 parent 55ac03c commit a7b7d7f

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

client/modules/User/components/LoginForm.jsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22
import { useTranslation } from 'react-i18next';
33
import { Form, Field } from 'react-final-form';
44
import { useDispatch } from 'react-redux';
@@ -8,22 +8,28 @@ import { validateLogin } from '../../../utils/reduxFormUtils';
88
import { validateAndLoginUser } from '../actions';
99

1010
function LoginForm() {
11-
const { t } = useTranslation();
11+
const { t, i18n } = useTranslation();
1212

1313
const dispatch = useDispatch();
1414
function onSubmit(formProps) {
1515
return dispatch(validateAndLoginUser(formProps));
1616
}
1717
const [showPassword, setShowPassword] = useState(false);
18+
const [formUpdateKey, setFormUpdateKey] = useState(false);
19+
1820
const handleVisibility = () => {
1921
setShowPassword(!showPassword);
2022
};
23+
useEffect(() => {
24+
setFormUpdateKey(!formUpdateKey);
25+
}, [i18n.language]);
2126

2227
return (
2328
<Form
2429
fields={['email', 'password']}
2530
validate={validateLogin}
2631
onSubmit={onSubmit}
32+
key={formUpdateKey}
2733
>
2834
{({ handleSubmit, submitError, submitting, modifiedSinceLastSubmit }) => (
2935
<form className="form" onSubmit={handleSubmit}>

client/modules/User/components/SignupForm.jsx

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22
import { useTranslation } from 'react-i18next';
33
import { Form, Field } from 'react-final-form';
44
import { useDispatch } from 'react-redux';
@@ -34,26 +34,31 @@ function validateEmail(email) {
3434
}
3535

3636
function SignupForm() {
37-
const { t } = useTranslation();
37+
const { t, i18n } = useTranslation();
3838

3939
const dispatch = useDispatch();
4040
function onSubmit(formProps) {
4141
return dispatch(validateAndSignUpUser(formProps));
4242
}
4343
const [showPassword, setShowPassword] = useState(false);
4444
const [showConfirmPassword, setShowConfirmPassword] = useState(false);
45+
const [formUpdateKey, setFormUpdateKey] = useState(false);
4546
const handleVisibility = () => {
4647
setShowPassword(!showPassword);
4748
};
4849
const handleConfirmVisibility = () => {
4950
setShowConfirmPassword(!showConfirmPassword);
5051
};
52+
useEffect(() => {
53+
setFormUpdateKey(!formUpdateKey);
54+
}, [i18n.language]);
5155

5256
return (
5357
<Form
5458
fields={['username', 'email', 'password', 'confirmPassword']}
5559
validate={validateSignup}
5660
onSubmit={onSubmit}
61+
key={formUpdateKey}
5762
>
5863
{({ handleSubmit, pristine, submitting, invalid }) => (
5964
<form className="form" onSubmit={handleSubmit}>

0 commit comments

Comments
 (0)