1- import React from 'react' ;
1+ import React , { Component } from 'react' ;
2+ class Signin extends Component {
23
3- const Signin = ( { onRouteChange} ) => {
4+ constructor ( props ) {
5+ super ( props ) ;
6+ this . state = {
7+ signInEmail :'' ,
8+ signInPassword : ''
9+ }
10+ }
11+
12+ onEmailChange = ( event ) => {
13+ this . setState ( { signInEmail : event . target . value } ) ;
14+ }
15+
16+ onPasswordChange = ( event ) => {
17+ this . setState ( { signInPassword : event . target . value } ) ;
18+ }
19+
20+ onSubmitSignIn = ( ) => {
21+ fetch ( "http://localhost:3001/signin" , {
22+ method : 'post' ,
23+ headers : { 'Content-Type' : 'application/json' } ,
24+ body : JSON . stringify ( {
25+ email : this . state . signInEmail ,
26+ password : this . state . signInPassword
27+ } )
28+ } )
29+ . then ( response => response . json ( ) )
30+ . then ( data => {
31+ if ( data === 'success' ) {
32+ this . props . onRouteChange ( 'home' ) ;
33+ }
34+ } )
35+ }
36+
37+ render ( ) {
38+ const { onRouteChange} = this . props ;
439 return (
5- < article className = "br3 ba b--black-10 mv4 w-100 w-50-m w-25-l mw6 shadow-5 center" >
6- < main className = "pa4 black-80" >
7- < div className = "measure" >
8- < fieldset id = "sign_up" className = "ba b--transparent ph0 mh0" >
9- < legend className = "f1 fw6 ph0 mh0" > Sign In</ legend >
10- < div className = "mt3" >
11- < label className = "db fw6 lh-copy f6" htmlFor = "email-address" > Email</ label >
12- < input
13- className = "pa2 input-reset ba bg-transparent hover-bg-black hover-white w-100"
14- type = "email"
15- name = "email-address"
16- id = "email-address"
17- />
18- </ div >
19- < div className = "mv3" >
20- < label className = "db fw6 lh-copy f6" htmlFor = "password" > Password</ label >
21- < input
22- className = "b pa2 input-reset ba bg-transparent hover-bg-black hover-white w-100"
23- type = "password"
24- name = "password"
25- id = "password"
26- />
27- </ div >
28- </ fieldset >
29- < div className = "" >
40+ < article className = "br3 ba b--black-10 mv4 w-100 w-50-m w-25-l mw6 shadow-5 center" >
41+ < main className = "pa4 black-80" >
42+ < div className = "measure" >
43+ < fieldset id = "sign_up" className = "ba b--transparent ph0 mh0" >
44+ < legend className = "f1 fw6 ph0 mh0" > Sign In</ legend >
45+ < div className = "mt3" >
46+ < label className = "db fw6 lh-copy f6" htmlFor = "email-address" > Email</ label >
3047 < input
31- onClick = { ( ) => onRouteChange ( 'home' ) }
32- className = "b ph3 pv2 input-reset ba b--black bg-transparent grow pointer f6 dib"
33- type = "submit"
34- value = "Sign in"
48+ onChange = { this . onEmailChange }
49+ className = "pa2 input-reset ba bg-transparent hover-bg-black hover-white w-100"
50+ type = "email"
51+ name = "email-address"
52+ id = "email-address"
3553 />
36- < div className = "lh-copy mt3" >
37- < p onClick = { ( ) => onRouteChange ( 'register' ) } className = "f6 link dim black db pointer" > Register</ p >
38- </ div >
54+ </ div >
55+ < div className = "mv3" >
56+ < label className = "db fw6 lh-copy f6" htmlFor = "password" > Password</ label >
57+ < input
58+ onChange = { this . onPasswordChange }
59+ className = "b pa2 input-reset ba bg-transparent hover-bg-black hover-white w-100"
60+ type = "password"
61+ name = "password"
62+ id = "password"
63+ />
64+ </ div >
65+ </ fieldset >
66+ < div className = "" >
67+ < input
68+ onClick = { this . onSubmitSignIn }
69+ className = "b ph3 pv2 input-reset ba b--black bg-transparent grow pointer f6 dib"
70+ type = "submit"
71+ value = "Sign in"
72+ />
73+ < div className = "lh-copy mt3" >
74+ < p onClick = { ( ) => onRouteChange ( 'register' ) } className = "f6 link dim black db pointer" > Register</ p >
3975 </ div >
4076 </ div >
41- </ main >
42- </ article >
77+ </ div >
78+ </ main >
79+ </ article >
4380 )
81+ }
4482}
4583
4684export default Signin ;
0 commit comments