在上一小节里面我们知道,存在 ./src/layouts/index 时,会自动使用它作为全局布局。
第一步 删除 config/config.ts 中的 routess配置
因为配置式相关的主要是 react-router 的内容,所以这边暂时不多做说明,我们先以 umi 的约定式路由,进行本次的入门学习。
第二步 新建 ./src/layouts/index.tsx
import React from 'react';function BasicLayout(props) {return (<div><h1>Yay! Welcome to umi!</h1>{props.children}</div>);}export default BasicLayout;
编辑 layout 文件如上。其实 layout 也是一个组件。umi 会自动使用它包裹页面,并传入如下 props:
//props{match?: match<P>;location: Location<S>;history: History;route: IRoute;}
你可以随意的修改这个文件,但是一定要记得包裹 {props.children} 。
第二步 使用 antd 的 Layout 组件
在文件头部引入 antd 的 Layout 组件,并从 Layout 中取出 Header, Content, Footer
import { Layout } from 'antd';const { Header, Content, Footer } = Layout;
使用 Header, Content, Footer,包裹children。
import styles from './index.css';import { Layout } from 'antd';const { Header, Content, Footer } = Layout;function BasicLayout(props) {return (<Layout><Header><div style={{ color: 'white' }}>王者荣耀资料库</div></Header><Content style={{ padding: '0 50px' }}>{props.children}</Content><Footer style={{ textAlign: 'center' }}>Umi 入门教程 Created by xiaohuoni</Footer></Layout>);}export default BasicLayout;

更改完后的效果,看起来不错吧,你可以随意的改改,看看效果。
第三步 增加页面导航
在头部引入 antd 的 menu 组件
- import { Layout } from 'antd';+ import { Layout, Menu } from 'antd';
在 Header 中增加导航
+ import styles from './index.less';<Header>- <div style={{ color: 'white' }}>王者荣耀资料库</div>+ <div className={styles.logo}>王者荣耀资料库 </div>+ <Menu+ theme="dark"+ mode="horizontal"+ defaultSelectedKeys={['1']}+ style={{ lineHeight: '64px' }}+ >+ <Menu.Item key="1">英雄</Menu.Item>+ <Menu.Item key="2">局内道具</Menu.Item>+ <Menu.Item key="3">召唤师技能</Menu.Item>+ </Menu></Header>
新建 ./src/layouts/index.less 并增加 logo 样式
.logo {width: 148px;color: white;margin: 16px 24px 16px 0;float: left;font-size: 18px;line-height: 30px;}
为了使得页面更美观,修改 Content
<Content style={{ padding: '0 50px' }}><div style={{ background: '#fff', padding: 24, minHeight: 280 }}>{props.children}</div></Content>
最终效果

代码回顾:这节课的全部代码
