react : umi 引入 antd 踩坑
首先要明确一个问题。
不管是 antd 还是 dva 还是别的什么东西,他们都是 umi 的插件——只要这个项目是使用 umi 脚手架生成的。
所以第一步应该是 .umirc.js (config.js) 的配置。
// ref: https://umijs.org/config/ export default { treeShaking: true, routes: [ { path: '/', component: '../layouts/index', routes: [ { path: '/', component: '../pages/index' } ] } ], plugins: [ // ref: https://umijs.org/plugin/umi-plugin-react.html ['umi-plugin-react', { antd: true, dva: true, dynamicImport: false, title: 'umi_with_dva_test', dll: false, routes: { exclude: [ /components\//, ], }, }], ], }
把 antd 的布局UI的代码粘到 Layouts 中。
请记住:
Layouts > Pages > Components
import { Layout, Menu, Breadcrumb, Icon } from 'antd'; const { SubMenu } = Menu; const { Header, Content, Sider } = Layout; export default function(props) { return ( <Layout> <Header className="header"> <div className="logo" /> <Menu theme="dark" mode="horizontal" defaultSelectedKeys={['2']} style={{ lineHeight: '64px' }} > <Menu.Item key="1">nav 1</Menu.Item> <Menu.Item key="2">nav 2</Menu.Item> <Menu.Item key="3">nav 3</Menu.Item> </Menu> </Header> <Layout> <Sider width={200} style={{ background: '#fff' }}> <Menu mode="inline" defaultSelectedKeys={['1']} defaultOpenKeys={['sub1']} style={{ height: '100%', borderRight: 0 }} > <SubMenu key="sub1" title={ <span> <Icon type="user" /> subnav 1 </span> } > <Menu.Item key="1">option1</Menu.Item> <Menu.Item key="2">option2</Menu.Item> <Menu.Item key="3">option3</Menu.Item> <Menu.Item key="4">option4</Menu.Item> </SubMenu> <SubMenu key="sub2" title={ <span> <Icon type="laptop" /> subnav 2 </span> } > <Menu.Item key="5">option5</Menu.Item> <Menu.Item key="6">option6</Menu.Item> <Menu.Item key="7">option7</Menu.Item> <Menu.Item key="8">option8</Menu.Item> </SubMenu> <SubMenu key="sub3" title={ <span> <Icon type="notification" /> subnav 3 </span> } > <Menu.Item key="9">option9</Menu.Item> <Menu.Item key="10">option10</Menu.Item> <Menu.Item key="11">option11</Menu.Item> <Menu.Item key="12">option12</Menu.Item> </SubMenu> </Menu> </Sider> <Layout style={{ padding: '0 24px 24px' }}> <Breadcrumb style={{ margin: '16px 0' }}> <Breadcrumb.Item>Home</Breadcrumb.Item> <Breadcrumb.Item>List</Breadcrumb.Item> <Breadcrumb.Item>App</Breadcrumb.Item> </Breadcrumb> <Content style={{ background: '#fff', padding: 24, margin: 0, minHeight: 'calc(100vh - 141px)', }} > {props.children} </Content> </Layout> </Layout> </Layout> ); }
最后是page。
export default function() { return ( <div>123</div> ); }
posted on 2019-11-04 13:50 fox_charon 阅读(8268) 评论(0) 编辑 收藏 举报