Commit 3f27e3b1 by zhanghaozhe

formik

parent 8c92b384
import React, { Component } from "react" import React, { Component } from "react"
import './accountLogin.scss' import './accountLogin.scss'
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { withFormik, FastField, Form } from "formik";
import Header from "../common/Header"; import Header from "../common/Header";
...@@ -17,29 +18,48 @@ class AccountLogin extends Component { ...@@ -17,29 +18,48 @@ class AccountLogin extends Component {
return ( return (
<div className={'account-login'}> <div className={'account-login'}>
<Header/> <Header/>
<div className="login-info"> <Form className="login-info">
<Input inputType={'number'} <FastField
name='account'
render={({field}) => (
<Input
{...field}
type={'number'}
placeholder={'手机/邮箱/昵称'} placeholder={'手机/邮箱/昵称'}
wrapperClass={'tel-input'} wrapperClass={'tel-input'}
icon={<i className={'iconfont iconshouji'} icon={
<i className={'iconfont iconshouji'}
style={{fontSize: '22px', left: '10px'}} style={{fontSize: '22px', left: '10px'}}
/>}
/> />
{/*<VeriCodeButton }
className={'verification'} />
/>*/} )}
/>
<FastField
name='password'
render={({field}) => (
<PasswordInput <PasswordInput
{...field}
placeholder={'密码'} placeholder={'密码'}
/> />
)}
/>
<LoginButton/> <LoginButton/>
<Link className={'forgot-password-btn'} to='/passport/forgot-password'>忘记密码</Link> <Link className={'forgot-password-btn'} to='/passport/forgot-password'>忘记密码</Link>
</div> </Form>
{/*<LoginWays loginWays={this.props.loginWays}/>*/} {/*<LoginWays loginWays={this.props.loginWays}/>*/}
</div> </div>
); );
} }
} }
export default AccountLogin const formikConfig = {
mapPropsToValues: () => ({
account: '',
password: ''
}),
handleSubmit(values) {
console.log(values)
}
}
export default withFormik(formikConfig)(AccountLogin)
import React, { Component } from 'react'; import React, { PureComponent } from 'react';
import './password-input.scss' import './password-input.scss'
import classnames from 'classnames' import classnames from 'classnames'
import Input from '../Input' import Input from '../Input'
class PasswordInput extends Component { class PasswordInput extends PureComponent {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
...@@ -17,18 +17,16 @@ class PasswordInput extends Component { ...@@ -17,18 +17,16 @@ class PasswordInput extends Component {
} }
render() { render() {
let {placeholder, onChange} = this.props let {placeholder, ...rest} = this.props
return ( return (
<Input <Input
type={this.state.showPassword ? 'text' : 'password'} type={this.state.showPassword ? 'text' : 'password'}
wrapperClass={'password-input'} wrapperClass={'password-input'}
placeholder={placeholder} placeholder={placeholder}
onChange={onChange} {...rest}
> >
<i className={classnames('iconfont', { <i className={classnames('iconfont', [this.state.showPassword ? 'iconpwd-hidden' : 'iconyanjing'])}
'iconpwd-hidden': this.state.showPassword, onClick={this.togglePasswordVisibility}/>
'iconyanjing': !this.state.showPassword
})} onClick={this.togglePasswordVisibility}/>
</Input> </Input>
); );
} }
......
...@@ -3,6 +3,10 @@ export const login = (userInfo) => ({ ...@@ -3,6 +3,10 @@ export const login = (userInfo) => ({
userInfo userInfo
}) })
export const logout = () => ({
type: 'LOGOUT'
})
export const requestLogin = payload => dispatch => { export const requestLogin = payload => dispatch => {
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ class WechatLogin extends PureComponent { ...@@ -20,7 +20,7 @@ class WechatLogin extends PureComponent {
<Form className="login-info"> <Form className="login-info">
<FastField <FastField
name='tel' name='tel'
/*render={({field}) => ( render={({field}) => (
<Input <Input
{...field} {...field}
type={'tel'} type={'tel'}
...@@ -30,21 +30,8 @@ class WechatLogin extends PureComponent { ...@@ -30,21 +30,8 @@ class WechatLogin extends PureComponent {
style={{fontSize: '22px', left: '10px'}} style={{fontSize: '22px', left: '10px'}}
/>} />}
/> />
)}*/ )}
> >
{
({field}) => (
<Input
{...field}
type={'tel'}
placeholder={'手机号快捷登录(免注册)'}
wrapperClass={'tel-input'}
icon={<i className={'iconfont iconshouji'}
style={{fontSize: '22px', left: '10px'}}
/>}
/>
)
}
</FastField> </FastField>
<FastField <FastField
type='number' type='number'
...@@ -78,13 +65,13 @@ const FormikConfig = { ...@@ -78,13 +65,13 @@ const FormikConfig = {
console.log(values) console.log(values)
}, },
validateOnChange: false, validateOnChange: false,
validate: (values) => { /*validate: (values) => {
let errors = {} let errors = {}
if (!/^1[3-9](\d{9})$/.test(values.tel)) { if (!/^1[3-9](\d{9})$/.test(values.tel)) {
errors.tel = '手机号不正确' errors.tel = '手机号不正确'
} }
return errors return errors
} }*/
} }
export default withFormik(FormikConfig)(WechatLogin) export default withFormik(FormikConfig)(WechatLogin)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment