Ant Design

安装ant design

  1. yarn add antd

如果要使用图标,还需安装

  1. yarn add @ant-design/icons

在index.tsx中引入样式

  1. import 'antd/dist/antd.css';

使用antd

  1. import logo from './logo.svg'
  2. import styles from './App.module.css'
  3. import { Layout, Typography, Input, Menu, Button, Dropdown } from 'antd'
  4. import { GlobalOutlined } from '@ant-design/icons'
  5. function App() {
  6. return (
  7. <div className={styles.App}>
  8. <div className={styles['app-header']}>
  9. <div className={styles['top-header']}>
  10. <div className={styles.inner}>
  11. <Typography.Text>让旅游更幸福</Typography.Text>
  12. <Dropdown.Button
  13. style={{ marginLeft: 15 }}
  14. overlay={
  15. <Menu>
  16. <Menu.Item>中文</Menu.Item>
  17. <Menu.Item>English</Menu.Item>
  18. </Menu>
  19. }
  20. icon={<GlobalOutlined />}
  21. >
  22. 语言
  23. </Dropdown.Button>
  24. <Button.Group className={styles['button-group']}>
  25. <Button>注册</Button>
  26. <Button>登录</Button>
  27. </Button.Group>
  28. </div>
  29. </div>
  30. <Layout.Header className={styles['main-header']}>
  31. <img src={logo} alt="logo" className={styles['App-logo']} />
  32. <Typography.Title level={3} className={styles.title}>
  33. React旅游网
  34. </Typography.Title>
  35. <Input.Search
  36. placeholder={'请输入旅游目的地、主题或关键字'}
  37. className={styles['search-input']}
  38. />
  39. </Layout.Header>
  40. <Menu mode={'horizontal'} className={styles['main-menu']}>
  41. <Menu.Item key={1}>旅游首页</Menu.Item>
  42. <Menu.Item key={2}>周末游</Menu.Item>
  43. <Menu.Item key={3}>跟团游</Menu.Item>
  44. <Menu.Item key="4"> 自由行 </Menu.Item>
  45. <Menu.Item key="5"> 私家团 </Menu.Item>
  46. <Menu.Item key="6"> 邮轮 </Menu.Item>
  47. <Menu.Item key="7"> 酒店+景点 </Menu.Item>
  48. <Menu.Item key="8"> 当地玩乐 </Menu.Item>
  49. <Menu.Item key="9"> 主题游 </Menu.Item>
  50. <Menu.Item key="10"> 定制游 </Menu.Item>
  51. <Menu.Item key="11"> 游学 </Menu.Item>
  52. <Menu.Item key="12"> 签证 </Menu.Item>
  53. <Menu.Item key="13"> 企业游 </Menu.Item>
  54. <Menu.Item key="14"> 高端游 </Menu.Item>
  55. <Menu.Item key="15"> 爱玩户外 </Menu.Item>
  56. <Menu.Item key="16"> 保险 </Menu.Item>
  57. </Menu>
  58. </div>
  59. <Layout.Footer>
  60. <Typography.Title level={3} style={{ textAlign: 'center' }}>
  61. 版权所有 @ React 旅游网
  62. </Typography.Title>
  63. </Layout.Footer>
  64. </div>
  65. )
  66. }
  67. export default App

组件化

新建assets和components目录
图片和字体放assets目录中
在components目录中,每个组件独自一个文件夹,里面放.module.css和.tsx文件
image.png

优化import组件的方式

在header目录新建index.ts

  1. export * from './Header'

footer目录同理
在components目录新建index.ts

  1. export * from './header'
  2. export * from './footer'

所有组件的import的方式都可以改成

  1. import { Header, Footer } from './components'

这里用的是重新导出的语法
export * from ... 是先导入后导出的简写, 且只会导出命名的导出

  1. export * from'./user.js';// 重新导出命名的导出
  2. export {default} from'./user.js';// 重新导出默认的导出