Typescriptify Login-Component

This commit is contained in:
Jannis Mattheis 2018-04-19 21:12:26 +02:00 committed by Jannis Mattheis
parent 73ba29efe5
commit 6152f74ab1
1 changed files with 23 additions and 19 deletions

View File

@ -1,35 +1,26 @@
import React, {Component} from 'react';
import Button from 'material-ui/Button';
import Grid from 'material-ui/Grid';
import TextField from 'material-ui/TextField';
import Container from '../component/Container';
import React, {ChangeEvent, Component, FormEvent} from 'react';
import * as UserAction from '../actions/UserAction';
import Container from '../component/Container';
import DefaultPage from '../component/DefaultPage';
class Login extends Component {
constructor() {
super();
this.state = {username: '', password: ''};
}
interface IState {
username: string
password: string
}
handleChange(propertyName, event) {
const state = this.state;
state[propertyName] = event.target.value;
this.setState(state);
}
class Login extends Component<{}, IState> {
public state = {username: '', password: ''};
login = (e) => {
e.preventDefault();
UserAction.login(this.state.username, this.state.password);
};
render() {
public render() {
const {username, password} = this.state;
return (
<DefaultPage title="Login" maxWidth={250} hideButton={true}>
<Grid item xs={12} style={{textAlign: 'center'}}>
<Container>
<form onSubmit={(e) => e.preventDefault()}>
<form onSubmit={this.preventDefault}>
<TextField id="name" label="Username" margin="dense" value={username}
onChange={this.handleChange.bind(this, 'username')}/>
<TextField type="password" id="password" label="Password" margin="normal"
@ -44,6 +35,19 @@ class Login extends Component {
</DefaultPage>
);
}
private handleChange(propertyName: string, event: ChangeEvent<HTMLInputElement>) {
const state = this.state;
state[propertyName] = event.target.value;
this.setState(state);
}
private login = (e: React.MouseEvent<HTMLInputElement>) => {
e.preventDefault();
UserAction.login(this.state.username, this.state.password);
};
private preventDefault = (e: FormEvent<HTMLFormElement>) => e.preventDefault();
}
export default Login;