react login page demo
2024-10-19 11:54:06
1. login form
import React from "react";
import {Row, Col} from "antd";
import {Form, Input, Button} from "antd"; import LoginHeader from "./LoginHeader";
import AppFooter from "page/layout/footer/AppFooter";
import "./index.scss"; const FormItem = Form.Item; class LoginForm extends React.Component{ constructor(props){
super(props);
}
loginHandler(e) {
e.preventDefault();
let loginInfo = {};
this.props.form.validateFields((err, values) => {
if(!err){
loginInfo = {
username: values.username,
password: values.password
}
}
})
}
render() { const {getFieldDecorator} =this.props.form; return ( <div className="app-layout app-login"> <div className="login-header"> <LoginHeader /> </div> <div className="login-body"> <div className="app-layout-container"> <Row type="flex" justify="center"> <Col span={24}> <div className="login-left"> <img src="" alt="欢迎登陆react reducer demo"/> </div> <div className="login-right"> <Form onSubmit={(e) => this.loginHandler(e)} className="login-form"> <FormItem> {getFieldDecorator('username',{ rules: [{ required: true, message: "username not null" }] })(<Input addonBefore="username" placeholder="please enter username"/>)} </FormItem> <FormItem> {getFieldDecorator('password',{ rules: [{ required: true, message: "password not null" }] })(<Input addonBefore="password" placeholder="please enter password"/>)} </FormItem> <FormItem> <Button className="btn-block" type="primary" htmlType="submit">login</Button> </FormItem> </Form> </div> </Col> </Row> </div> </div> <AppFooter /> </div> ) } } const Login = Form.create()(LoginForm); export default Login;
2. index.scss
@import "../../styles/varibles";
.app-login{
.login-header {
background: $bg-color;
margin-bottom: 20px;
}
.login-body {
background: $bg-color;
min-height: 550px; .login-left {
width: 58%;
float: left;
img {
width: 600px;
height: 500px;
}
}
.login-right {
width: 42%;
float: right;
height: 500px;
border: $border; .login-form {
margin: 65px 0 45px 78px; .btn-block {
width: 320px;
height: 40px;
margin-top: 20px;
} .btn, .ant-input {
height: 40px;
} .ant-input-group-addon {
width: 82px;
background-color: $bg-color;
text-align: center;
}
.ant-input {
padding: 0 20px;
width: 238px;
}
}
}
}
}
最新文章
- JS最基础的获取元素的值实现加减乘除运算
- Mysql 分区
- ****CSS各种居中方法
- 编程中、遇到问题、bug多思考
- PHP网址
- PKU 1458 Common Subsequence(最长公共子序列,dp,简单)
- 世界上最方便的SharePoint移动客户端--Rshare
- AppStore 审核中文版 --- 程序员必看
- Python网络编程——修改套接字发送和接收的缓冲区大小
- [Swust OJ 567]--老虎在不在笼子里(凸包问题)
- JavaIO流程--创建文件和目录的实例
- Django2.1配置xadmin2.0
- ubuntu18.04.2LTS下如何用五笔输入法 --Linux
- nginx代理tomcat做负载
- jquery-- json字符串没有自动包装为 json对象
- TI 多模雷达1843毫米波雷达做自动泊车(用了8个雷达)
- HashMap实现原理分析--面试详谈
- VS2013中Nuget程序包管理器控制台使用入门(一)-准备环境(原创)
- 线程属性pthread_attr_t简介
- oralce 存储过程、函数和触发器