Skip to content

Commit 6ed1792

Browse files
committed
migration
1 parent b9b1b61 commit 6ed1792

File tree

1 file changed

+32
-39
lines changed

1 file changed

+32
-39
lines changed

front/src/pages/login/Login.tsx

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { PureComponent } from 'react';
1+
import React, { useState, useEffect, useCallback } from 'react';
22
import axios from 'axios';
33
import { RouteComponentProps } from 'react-router';
44
import Button from 'reactstrap/lib/Button';
@@ -10,30 +10,34 @@ import userInfoMock from '../../mock/userInfo.json';
1010
import { AuthContextProps } from '../../contexts/auth/consumerHOC';
1111
import FadeInEntrance from '../../components/fadeInEntrance';
1212

13-
// #region types
14-
type Props = {} & RouteComponentProps & AuthContextProps;
15-
16-
type State = {
17-
email: string;
18-
password: string;
19-
isLogging: boolean;
20-
};
21-
// #endregion
22-
23-
class Login extends PureComponent<Props, State> {
24-
state = {
25-
email: '',
26-
password: '',
27-
isLogging: false,
28-
};
2913

30-
// #region lifecycle
31-
componentDidMount() {
32-
this.disconnectUser(); // diconnect user: remove token and user info
33-
}
14+
type Props = {} & RouteComponentProps<any, any> & AuthContextProps;
15+
16+
17+
function Login({disconnectUser = () => {}, history, setToken, setUserInfo}: Props) {
18+
const [email, setEmail] = useState<string>('')
19+
const [password, setPassword] = useState<string>('')
20+
const [isLogging, setIsLogging] = useState<boolean>(false)
21+
22+
// #region on mount
23+
useEffect(() => {
24+
disconnectUser(); // diconnect user: remove token and user info
25+
}, [])
26+
// #endregion
3427

35-
render() {
36-
const { email, password, isLogging } = this.state;
28+
// #region input callbacks
29+
const handlesOnEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {
30+
event && event.preventDefault();
31+
// should add some validator before setState in real use cases
32+
setEmail(event.target.value.trim());
33+
}, []);
34+
35+
const handlesOnPasswordChange = (event: React.ChangeEvent<HTMLInputElement>) => {
36+
event && event.preventDefault();
37+
// should add some validator before setState in real use cases
38+
setPassword(event.target.value.trim());
39+
};
40+
// #endregion
3741

3842
return (
3943
<FadeInEntrance>
@@ -59,7 +63,7 @@ class Login extends PureComponent<Props, State> {
5963
placeholder="Email"
6064
autoComplete="username email"
6165
value={email}
62-
onChange={this.handlesOnEmailChange}
66+
onChange={handlesOnEmailChange}
6367
/>
6468
</Col>
6569
</div>
@@ -120,24 +124,13 @@ class Login extends PureComponent<Props, State> {
120124
</FadeInEntrance>
121125
);
122126
}
123-
// #endregion
124127

125-
disconnectUser = () => {
126-
const { disconnectUser } = this.props;
127-
disconnectUser();
128-
};
129128

130-
handlesOnEmailChange = (event: React.ChangeEvent<HTMLInputElement>) => {
131-
event.preventDefault();
132-
// should add some validator before setState in real use cases
133-
this.setState({ email: event.target.value.trim() });
134-
};
135129

136-
handlesOnPasswordChange = (event: React.ChangeEvent<HTMLInputElement>) => {
137-
event.preventDefault();
138-
// should add some validator before setState in real use cases
139-
this.setState({ password: event.target.value.trim() });
140-
};
130+
131+
132+
133+
141134

142135
handlesOnLogin = async (event: React.MouseEvent<HTMLButtonElement>) => {
143136
if (event) {

0 commit comments

Comments
 (0)