创建登录页
框架模板自带的登录模板较为复杂,而且不符合我们的登录需求,所以我们需要自行创建登录页.
创建src/pages/Login/index.tsx
import React from 'react';// 使用函数组件创建 虽然采用了typescript语法 ,但可以先像 js一样写代码.const Login = ()=>{return (<div>hellow, login !</div>)}export default Login;
修改路由文件 config/routes.ts
{path: '/',component: '../layouts/BlankLayout',routes: [{path: '/user',component: '../layouts/UserLayout',routes: [{name: 'login',path: '/user/login',//===> 这里使用刚才创建的组件替换默认登录组件. /index.tsx 可以省略不写component: './Login',},],},
修改layouts/UserLayout.tsx 组件显示信息
import { GithubOutlined } from '@ant-design/icons';...<div className={styles.container}><div className={styles.lang}><SelectLang /></div><div className={styles.content}><div className={styles.top}><div className={styles.header}><Link to="/"><img alt="logo" className={styles.logo} src={logo} /><span className={styles.title}>乐居商城</span></Link></div><div className={styles.desc}>/* 国际化配置映射 */<FormattedMessage id="pages.layouts.userLayout.title" defaultMessage="默认信息" /></div></div>{children}</div>/* 自定义底部# https://procomponents.ant.design/components/layout/#footer*/<DefaultFootercopyright={`${new Date().getFullYear()} 不凡学院`}links={[{key: 'Ant Design Pro',title: 'Ant Design Pro',href: 'https://pro.ant.design',blankTarget: true,},{key: 'github',title: <GithubOutlined />,href: 'https://gitee.com/bufanxy/react-learn-demos',blankTarget: true,},{key: 'Ant Design',title: 'Ant Design',href: 'https://ant.design',blankTarget: true,},]}/></div>
访问 http://localhost:8000/user/login
创建表单
可以参考 ant design 文档,创建表单组件. 修改 src/pages/Login/index.tsx
样式这里采用的是 less ,跟 sass 一样是css预编译器. 通过模块化引入,可以直接在 jsx 中调用. 注意: 在jsx中对属性采用驼峰命名,区别于普通html规范.
import React from 'react';import { Form, Input, Button } from 'antd';import styles from './index.less';const Login = ()=>{// 提交表单且数据验证成功后回调事件const onFinish = v=>{console.log('v',v);}// 提交表单且数据验证失败后回调事件const onFinishFailed = v=>{console.log('ev',v);}return (<FormclassName={styles.main}labelCol = {{span: 8}}wrapperCol = {{span: 16}}onFinish= {onFinish}onFinishFailed = {onFinishFailed}><Form.Itemlabel="用户名"name="username"rules={[{required: true ,message: '用户名不能为空!'}]}><Input/></Form.Item><Form.Itemlabel="密码"name="password"rules={[{required: true, message: '密码不能为空!'}]}><Input.Password/></Form.Item><Form.ItemwrapperCol={{offset: 8,span: 16}}><Button type="primary" htmlType="submit">登录</Button></Form.Item></Form>)}export default Login;// ./index.less.main{width: 400px;margin: 100px auto;}

使用 ant design 我们方便的实现了登录页的布局,如何调用接口? 不要着急,这里和vue项目有比较大的差别.我们需要先了解项目的逻辑分层.
