basic.md 3.06 KB
Newer Older
ddcat1115's avatar
ddcat1115 committed
1 2
---
order: 0
3 4 5
title:
  zh-CN: 标准登录
  en-US: Standard Login
ddcat1115's avatar
ddcat1115 committed
6 7
---

8
Support login with account and mobile number.
ddcat1115's avatar
ddcat1115 committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22

````jsx
import Login from 'ant-design-pro/lib/Login';
import { Alert, Checkbox } from 'antd';

const { Tab, UserName, Password, Mobile, Captcha, Submit } = Login;

class LoginDemo extends React.Component {
  state = {
    notice: '',
    type: 'tab2',
    autoLogin: true,
  }
  onSubmit = (err, values) => {
ddcat1115's avatar
ddcat1115 committed
23
    console.log('value collected ->', { ...values, autoLogin: this.state.autoLogin });
ddcat1115's avatar
ddcat1115 committed
24 25 26 27 28 29 30
    if (this.state.type === 'tab1') {
      this.setState({
        notice: '',
      }, () => {
        if (!err && (values.username !== 'admin' || values.password !== '888888')) {
          setTimeout(() => {
            this.setState({
31
              notice: 'The combination of username and password is incorrect!',
ddcat1115's avatar
ddcat1115 committed
32
            });
ddcat1115's avatar
ddcat1115 committed
33 34
          }, 500);
        }
ddcat1115's avatar
ddcat1115 committed
35
      });
ddcat1115's avatar
ddcat1115 committed
36 37 38 39 40
    }
  }
  onTabChange = (key) => {
    this.setState({
      type: key,
ddcat1115's avatar
ddcat1115 committed
41
    });
ddcat1115's avatar
ddcat1115 committed
42 43 44 45
  }
  changeAutoLogin = (e) => {
    this.setState({
      autoLogin: e.target.checked,
ddcat1115's avatar
ddcat1115 committed
46
    });
ddcat1115's avatar
ddcat1115 committed
47 48 49 50 51 52 53 54
  }
  render() {
    return (
      <Login
        defaultActiveKey={this.state.type}
        onTabChange={this.onTabChange}
        onSubmit={this.onSubmit}
      >
55
        <Tab key="tab1" tab="Account">
ddcat1115's avatar
ddcat1115 committed
56 57 58 59 60 61 62
          {
            this.state.notice &&
            <Alert style={{ marginBottom: 24 }} message={this.state.notice} type="error" showIcon closable />
          }
          <UserName name="username" />
          <Password name="password" />
        </Tab>
63
        <Tab key="tab2" tab="Mobile">
ddcat1115's avatar
ddcat1115 committed
64 65 66 67
          <Mobile name="mobile" />
          <Captcha onGetCaptcha={() => console.log('Get captcha!')} name="captcha" />
        </Tab>
        <div>
68 69
          <Checkbox checked={this.state.autoLogin} onChange={this.changeAutoLogin}>Keep me logged in</Checkbox>
          <a style={{ float: 'right' }} href="">Forgot password</a>
ddcat1115's avatar
ddcat1115 committed
70
        </div>
71
        <Submit>Login</Submit>
ddcat1115's avatar
ddcat1115 committed
72
        <div>
73
          Other login methods
ddcat1115's avatar
ddcat1115 committed
74 75 76
          <span className="icon icon-alipay" />
          <span className="icon icon-taobao" />
          <span className="icon icon-weibo" />
77
          <a style={{ float: 'right' }} href="">Register</a>
ddcat1115's avatar
ddcat1115 committed
78 79
        </div>
      </Login>
ddcat1115's avatar
ddcat1115 committed
80
    );
ddcat1115's avatar
ddcat1115 committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
  }
}

ReactDOM.render(<LoginDemo />, mountNode);
````

<style>
#scaffold-src-components-Login-demo-basic .icon {
  display: inline-block;
  width: 24px;
  height: 24px;
  background: url('https://gw.alipayobjects.com/zos/rmsportal/itDzjUnkelhQNsycranf.svg');
  margin-left: 16px;
  vertical-align: middle;
  cursor: pointer;
}
#scaffold-src-components-Login-demo-basic .icon-alipay {
  background-position: -24px 0;
}
#scaffold-src-components-Login-demo-basic .icon-alipay:hover {
  background-position: 0 0;
}
#scaffold-src-components-Login-demo-basic .icon-taobao {
  background-position: -24px -24px;
}
#scaffold-src-components-Login-demo-basic .icon-taobao:hover {
  background-position: 0 -24px;
}
#scaffold-src-components-Login-demo-basic .icon-weibo {
  background-position: -24px -48px;
}
#scaffold-src-components-Login-demo-basic .icon-weibo:hover {
  background-position: 0 -48px;
}
</style>