Ant Design入门

这篇具有很好参考价值的文章主要介绍了Ant Design入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一:什么是Ant Design?

二:开始使用

三:布局

四:表格


一:什么是Ant Design?

        Ant Design是阿里蚂蚁金服团队基于React开发的ui组件,主要用于中后台系统的使用。

        官网:https://ant.design/index-cn

ant design,Ant Design,react.js,前端,前端框架

 ant design,Ant Design,react.js,前端,前端框架

设计语言:
随着商业化的趋势,越来越多的企业级产品对更好的用户体验有了进一步的要求。带着这样的一个终极目 标,我们(蚂蚁金服体验技术部)经过大量的项目实践和总结,逐步打磨出一个服务于企业级产品的设计体系 Ant Design 。基于『确定』和『自然』的设计价值观,通过模块化的解决方案,降低冗余的生产成本,让设计者专注于更好的用户体验。
特性:
  • 提炼自企业级中后台产品的交互语言和视觉风格。
  • 开箱即用的高质量 React 组件。
  • 使用 TypeScript 构建,提供完整的类型定义文件。
  • 全链路开发和设计工具体系。

二:开始使用

引入 Ant Design
          Ant Design 是一个服务于企业级产品的设计体系,组件库是它的 React 实现, antd 被发布为一个 npm 包方便开 发者安装并使用。
          在 umi 中,你可以通过在插件集 umi-plugin-react 中配置 antd 打开 antd 插件, antd 插件会帮你引入 antd 并实现按需编译。
confifig.js 文件中进行配置:
export default {
plugins: [
    ['umi-plugin-react', {
       dva: true, // 开启dva功能
       antd: true // 开启Ant Design功能
}]
]
};
小试牛刀
     接下来,我们开始使用 antd 的组件,以 tabs 组件为例,地址 https://ant.design/components/tabs-cn/

效果:

ant design,Ant Design,react.js,前端,前端框架

 看下官方给出的使用示例:

import { Tabs } from 'antd';

const TabPane = Tabs.TabPane;

function callback(key) {
console.log(key);
}

ReactDOM.render(
<Tabs defaultActiveKey="1" onChange={callback}>
<TabPane tab="Tab 1" key="1">Content of Tab Pane 1</TabPane>
<TabPane tab="Tab 2" key="2">Content of Tab Pane 2</TabPane>
<TabPane tab="Tab 3" key="3">Content of Tab Pane 3</TabPane>
</Tabs>,
mountNode);
下面我们参考官方给出的示例,进行使用:
创建 MyTabs.js 文件:
import React from 'react'
import {Tabs} from 'antd'

const TabPane = Tabs.TabPane;

const callback = (key) => {
   console.log(key);
}

class MyTabs extends React.Component {

render() {
   return (
<Tabs defaultActiveKey="1" onChange={callback}>
<TabPane tab="Tab 1" key="1">Content of Tab Pane 1</TabPane>
<TabPane tab="Tab 2" key="2">Content of Tab Pane 2</TabPane>
<TabPane tab="Tab 3" key="3">Content of Tab Pane 3</TabPane>
</Tabs>
)
}
}

export default MyTabs;
效果:

ant design,Ant Design,react.js,前端,前端框架

       到此,我们已经掌握了antd组件的基本使用。

三:布局

       antd 布局: https://ant.design/components/layout-cn/
       在后台系统页面布局中,往往是经典的三部分布局,像这样:

ant design,Ant Design,react.js,前端,前端框架下面,我们通过antd组件来完成这个布局。

组件概述
  • Layout :布局容器,其下可嵌套 Header Sider Content Footer Layout 本身,可以放在任何父容器中。
  • Header :顶部布局,自带默认样式,其下可嵌套任何元素,只能放在 Layout 中。
  • Sider :侧边栏,自带默认样式及基本功能,其下可嵌套任何元素,只能放在 Layout 中。
  • Content :内容部分,自带默认样式,其下可嵌套任何元素,只能放在 Layout 中。
  • Footer :底部布局,自带默认样式,其下可嵌套任何元素,只能放在 Layout 中。
搭建整体框架
   在 src 目录下创建 layouts 目录,并且在 layouts 目录下创建 index.js 文件,写入内容:
import React from 'react'
import { Layout } from 'antd';

const { Header, Footer, Sider, Content } = Layout;


class BasicLayout extends React.Component{


render(){
return (
   <Layout>
    <Sider>Sider</Sider>
      <Layout>
        <Header>Header</Header>
        <Content>Content</Content>
         <Footer>Footer</Footer>
        </Layout>
     </Layout>
);
}
}

export default BasicLayout;
     需要特别说明的是,在 umi 中约定的目录结构中, layouts/index.js 文件将被作为全局的布局文件。
接下来,配置路由:(非必须)
confifig.js 文件:
export default {

    plugins: [
       ['umi-plugin-react', {
            dva: true, // 开启dva功能
            antd: true // 开启Ant Design功能
}]
],
      routes: [{
                path: '/',
                component: '../layouts' //配置布局路由
}]
};
进行页面访问:
ant design,Ant Design,react.js,前端,前端框架

 可以看到,布局已经生成,只是样式优点丑。

子页面使用布局
           前面所定义的布局是全局布局,那么,在子页面中如何使用这个全局布局呢?
           首先,需要在布局文件中,将 Content 内容替换成 {this.props.children} ,意思是引入传递的内容。
import React from 'react'
import { Layout } from 'antd';

const { Header, Footer, Sider, Content } = Layout;

class BasicLayout extends React.Component{

render(){
     return (
                   <Layout>
                         <Sider>Sider</Sider>
                      <Layout>
                          <Header>Header</Header>
                          <Content>{this.props.children}</Content>
                          <Footer>Footer</Footer>
                       </Layout>
                 </Layout>
);
}
}

export default BasicLayout;
接下来配置路由(注意,在布局路由下面进行配置):
             说明:下面的路由配置,是表明你需要通过手动配置的方式上进行访问页面,而不采用 umi 默认的路由方式。
export default {
      plugins: [
          ['umi-plugin-react', {
              dva: true, // 开启dva功能
              antd: true // 开启Ant Design功能
       }]
],
     routes: [{
                        path: '/',
                        component: '../layouts', //配置布局路由
                        routes: [ //在这里进行配置子页面
               {
                         path: '/myTabs',
                         component: './myTabs'
}
]
}]
};
进行访问测试:

ant design,Ant Design,react.js,前端,前端框架

 可以看到,在MyTabs组件中已经应用了全局的布局。其他子页面也就同理了。

美化页面
接下来,对页面做一些美化的工作:
import React from 'react'
import { Layout } from 'antd';

const { Header, Footer, Sider, Content } = Layout;

class BasicLayout extends React.Component{

render(){
return (

     <Layout>
         <Sider width={256} style={{ minHeight: '100vh', color: 'white' }}>
            Sider
          </Sider>
       <Layout>
           <Header style={{ background: '#fff', textAlign: 'center', padding:
                  0 }}>Header</Header>
            <Content style={{ margin: '24px 16px 0' }}>
        <div style={{ padding: 24, background: '#fff', minHeight: 360
        }}>
           {this.props.children}
        </div>
      </Content>
         <Footer style={{ textAlign: 'center' }}>后台系统 ©2022 Created by 大唐霸业</Footer>
</Layout>
</Layout>
);
}
}

export default BasicLayout;
效果:
ant design,Ant Design,react.js,前端,前端框架

 

引入导航条
     使用 Menu 组件作为导航条: https://ant.design/components/menu-cn/
import React from 'react'
import {Layout, Menu, Icon} from 'antd';

const {Header, Footer, Sider, Content} = Layout;

const SubMenu = Menu.SubMenu;

class BasicLayout extends React.Component {

constructor(props){
super(props);
this.state = {
collapsed: false,
}
}

render() {
return (
     <Layout>
          <Sider width={256} style={{minHeight: '100vh', color: 'white'}}>
         <div style={{ height: '32px', background: 'rgba(255,255,255,.2)',
           margin: '16px'}}/>
       <Menu
            defaultSelectedKeys={['2']}
            defaultOpenKeys={['sub1']}
            mode="inline"
            theme="dark"
            inlineCollapsed={this.state.collapsed}
          >
             <Menu.Item key="1">
                 <Icon type="pie-chart"/>
                 <span>Option 1</span>
             </Menu.Item>
             <Menu.Item key="2">
                  <Icon type="desktop"/>
                  <span>Option 2</span>
             </Menu.Item>
             <Menu.Item key="3">
                 <Icon type="inbox"/>
                 <span>Option 3</span>
             </Menu.Item>
          <SubMenu key="sub1" title={<span><Icon type="mail"/>
                    <span>Navigation One</span></span>}>
                    <Menu.Item key="5">Option 5</Menu.Item>
                    <Menu.Item key="6">Option 6</Menu.Item>
                    <Menu.Item key="7">Option 7</Menu.Item>
                    <Menu.Item key="8">Option 8</Menu.Item>
          </SubMenu>
          <SubMenu key="sub2" title={<span><Icon type="appstore"/>
                    <span>Navigation Two</span></span>}>
                    <Menu.Item key="9">Option 9</Menu.Item>
                    <Menu.Item key="10">Option 10</Menu.Item>
          <SubMenu key="sub3" title="Submenu">
                   <Menu.Item key="11">Option 11</Menu.Item>
                   <Menu.Item key="12">Option 12</Menu.Item>
           </SubMenu>
           </SubMenu>
           </Menu>
           </Sider>
         <Layout>
          <Header style={{background: '#fff', textAlign: 'center', padding:
             0}}>Header</Header>
          <Content style={{margin: '24px 16px 0'}}>
          <div style={{padding: 24, background: '#fff', minHeight: 360}}>
               {this.props.children}
              </div>
            </Content>
               <Footer style={{textAlign: 'center'}}>后台系统 ©2018 Created by 大唐霸业</Footer>
            </Layout>
             </Layout>
);
}
}


export default BasicLayout;
效果:
ant design,Ant Design,react.js,前端,前端框架

 

为导航添加链接
         下面,我们对左侧的导航条添加链接,点击相应的链接在右侧进行相应页面的显示。
          在 src 目录下创建 user 目录,并且在 user 目录下创建 UserAdd.js UserList.js 文件,用于模拟实现新增用户和查询用户列表功能。
ant design,Ant Design,react.js,前端,前端框架

 

UserAdd.js
import React from 'react'

class UserAdd extends React.Component{

render(){
return (
<div>新增用户</div>
);
}
}

export default UserAdd;
UserList.js
import React from 'react'

class UserList extends React.Component{

render(){
return (
<div>用户列表</div>
);
}
}

export default UserList;
接下来,配置路由:
export default {
        plugins: [
              ['umi-plugin-react', {
                     dva: true, // 开启dva功能
                     antd: true // 开启Ant Design功能
                 }]
               ],
             routes: [{
                     path: '/',
                     component: '../layouts', //配置布局路由
             routes: [
                    {
                     path: '/myTabs',
                     component: './myTabs'
                    },
                    {
                     path: '/user',
             routes: [
                     {
                     path: '/user/list',
                     component: './user/UserList'
                     },
                     {
                    path: '/user/add',
                     component: './user/UserAdd'
              }
             ]
          }
        ]
    }]
};
为菜单添加链接:
import React from 'react'
import {Layout, Menu, Icon} from 'antd';
import Link from 'umi/link';

const {Header, Footer, Sider, Content} = Layout;

const SubMenu = Menu.SubMenu;

class BasicLayout extends React.Component {

constructor(props){
super(props);
this.state = {
collapsed: false,
}
}

render() {
       return (
        <Layout>
             <Sider width={256} style={{minHeight: '100vh', color: 'white'}}>
              <div style={{ height: '32px', background: 'rgba(255,255,255,.2)',
                  margin: '16px'}}/>
                  <Menu
                    defaultSelectedKeys={['1']}
                    defaultOpenKeys={['sub1']}
                    mode="inline"
                    theme="dark"
                    inlineCollapsed={this.state.collapsed}
                    >
                <SubMenu key="sub1" title={<span><Icon type="user"/><span>用户管
                  理</span></span>}>
                   <Menu.Item key="1">
                   <Link to="/user/list">用户列表</Link>
                   </Menu.Item>
                   <Menu.Item key="2">
                   <Link to="/user/add">新增用户</Link>
                   </Menu.Item>
                  </SubMenu>
                  </Menu>
                 </Sider>
              <Layout>
             <Header style={{background: '#fff', textAlign: 'center', padding:
             0}}>Header</Header>
              <Content style={{margin: '24px 16px 0'}}>
            <div style={{padding: 24, background: '#fff', minHeight: 360}}>
             {this.props.children}
            </div>
         </Content>
           <Footer style={{textAlign: 'center'}}>后台系统 ©2018 Created by 大唐霸业</Footer>
         </Layout>
         </Layout>
       );
    }
  }
      export default BasicLayout;
注意:这里使用了 umi link 标签,目的是出现记录点击的菜单。
测试:
ant design,Ant Design,react.js,前端,前端框架
ant design,Ant Design,react.js,前端,前端框架

 

四:表格

基本用法
参考官方文档进行实现: https://ant.design/components/table-cn/
改造 UserList.js 页面:
import React from 'react'
import {Table, Divider, Tag, Pagination } from 'antd';

const {Column} = Table;

const data = [{
key: '1',
name: '张三',
age: 32,
address: '上海市',
tags: ['程序员', '帅气'],
}, {
key: '2',
name: '李四',
age: 42,
address: '北京市',
tags: ['屌丝'],
}, {
key: '3',
name: '王五',
age: 32,
address: '杭州市',
tags: ['高富帅', '富二代'],
}];

class UserList extends React.Component {

render() {
   return (
      <div>
       <Table dataSource={data} pagination=
       {{position:"bottom",total:500,pageSize:10, defaultCurrent:3}}>
         <Column
           title="姓名"
           dataIndex="name"
           key="name"
        />
          <Column
              title="年龄"
              dataIndex="age"
              key="age"
           />
           <Column
               title="地址"
               dataIndex="address"
              key="address"
            />
           <Column
                 title="标签"
                 dataIndex="tags"
                  key="tags"
          render={tags => (
               <span>
                   {tags.map(tag => <Tag color="blue" key={tag}>{tag}
            </Tag>)}
                </span>
              )}
         />
                <Column
                    title="操作"
                     key="action"
                 render={(text, record) => (
                    <span>
                   <a href="javascript:;">编辑</a>
                 <Divider type="vertical"/>
                  <a href="javascript:;">删除</a>
                   </span>
               )}
                />
            </Table>
             </div>
              );

}
}
           export default UserList;
实现效果:
ant design,Ant Design,react.js,前端,前端框架

 

将数据分离到 model
model 的实现: UserListData.js
import request from "../util/request";

export default {
       namespace: 'userList',
        state: {
              list: []
       },
             effects: {
                *initData(params, sagaEffects) {
                  const {call, put} = sagaEffects;
                  const url = "/ds/user/list";
                    let data = yield call(request, url);
                  yield put({
                    type : "queryList",
                        data : data
                     });
                  }
                 },
            reducers: {
                  queryList(state, result) {
                  let data = [...result.data];
                   return { //更新状态值
                 list: data
              }
             }
       }
}
修改 UserList.js 中的逻辑:
import React from 'react';
import { connect } from 'dva';
import {Table, Divider, Tag, Pagination } from 'antd';

const {Column} = Table;

const namespace = 'userList';

@connect((state)=>{

return {
      data : state[namespace].list
}
}, (dispatch) => {
       return {
             initData : () => {
                  dispatch({
                     type: namespace + "/initData"
           });
         }
          }
        })

class UserList extends React.Component {
             componentDidMount(){
          this.props.initData();
       }
render() {
          return (
           <div>
               <Table dataSource={this.props.data} pagination=
                {{position:"bottom",total:500,pageSize:10, defaultCurrent:3}}>
                   <Column
                      title="姓名"
                      dataIndex="name"
                        key="name"
                     />
                   <Column
                     title="年龄"
                      dataIndex="age"
                      key="age"
                    />
                    <Column
                       title="地址"
                      dataIndex="address"
                       key="address"
                    />
                   <Column
                      title="标签"
                      dataIndex="tags"
                       key="tags"
             render={tags => (
                    <span>
           {                      tags.map(tag => <Tag color="blue" key={tag}>{tag}
                     </Tag>)}
                   </span>
              )}
                  />
                     <Column
                          title="操作"
                           key="action"
                        render={(text, record) => (
                <span>
                      <a href="javascript:;">编辑</a>
                      <Divider type="vertical"/>
                     <a href="javascript:;">删除</a>
                    </span>
            )}
            />
          </Table>
            </div>
);
}
}

                   export default UserList;
mock 数据: MockListData.js
export default {
'get /ds/list': function (req, res) {
res.json({
data: [1, 2, 3, 4],
maxNum: 4
});
},

'get /ds/user/list': function (req, res) {
res.json([{
key: '1',
name: '张三1',
age: 32,
address: '上海市',
tags: ['程序员', '帅气'],
}, {
key: '2',
name: '李四',
age: 42,
address: '北京市',
tags: ['屌丝'],
}, {
key: '3',
name: '王五',
age: 32,
address: '杭州市',
tags: ['高富帅', '富二代'],
}]);
}
}
测试结果:

ant design,Ant Design,react.js,前端,前端框架

 ant design,Ant Design,react.js,前端,前端框架文章来源地址https://www.toymoban.com/news/detail-781786.html

到了这里,关于Ant Design入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react ant-design实现导航菜单menu的路由设置/切换页面

    ant-design版本是5.1.1,路由版本是v6的 新版本的导航菜单路由设置与旧版的不太一样,刚开始的时候甚至不知道该怎么写 实现效果: 代码: 首先,给导航菜单的menu添加点击事件 修改item,通过设置点击事件获取点击后的key值(key值即路由跳转的页面) 打印出来看看 获取到的

    2024年02月12日
    浏览(58)
  • 26、react UI 组件库 Ant-design 蚂蚁金服UI组件库

    material-ui (国外) 官网:https://mui.com/zh/material-ui/getting-started/installation/ 这是国外非常流行的 react UI 组件库,但是在国内并不是很常用。 Ant-design UI组件库 官网:https://ant.design/index-cn 这是国内比较流行 react UI 组件库,又蚂蚁金服团队开发。这一篇博客主要来讲解在 react 项目中

    2024年02月08日
    浏览(37)
  • Ant Design:企业级 UI 设计语言和 React 库 | 开源日报 No.88

    Stars: 87.9k License: MIT Ant Design 是一个企业级 UI 设计语言和 React UI 库。 为 Web 应用程序设计的企业级 UI。 提供一套高质量的开箱即用的 React 组件。 使用可预测静态类型编写 TypeScript 代码。 包含完整的设计资源和开发工具包。 支持数十种语言国际化支持 基于 CSS-in-JS 实现强大

    2024年02月04日
    浏览(46)
  • Ant-Design-Pro-V5: ProTable前端导出excel表格。

    Prtable表格中根据搜索条件实现excel表格导出。 代码展示: index.jsx 数据字典格式返回: 以 teacherTypeObj 为例 向services.js中 lecturerExportExcel 方法中传入的格式为: services.js中 lecturerExportExcel 导出方法: utils 中 paramsFilter 方法:过滤无用参数

    2024年02月09日
    浏览(45)
  • ant.design 组件库中的 Tree 组件实现可搜索的树: React+and+ts

    ant.design 组件库中的 Tree 组件实现可搜索的树,在这里我会详细介绍每个方法,以及容易踩坑的点。 效果图: 下面是要渲染在 Tree 上的的数据,这是一个伪数据,如果你在开发时使用,直接修改给对应的变量名,赋值即可 这个方法是 Tree 组件提供的,用来筛选出要渲染的数

    2024年02月14日
    浏览(38)
  • 前端实现真实可动态变化进度条,axios+ Ant Design Vue实现.

    最近有一个新需求,要求在前端实现真实的进度条展示,我首先想到了  Ant Design Vue的upload组件, 在antd官网里upload组件不仅有上传功能,并且还附带了 Progress 进度条组件, 还拥有上传成功和失败的两种状态的区分,可以说是十分贴心了,如图  但是很可惜这个组件上传文件的话,你要

    2024年02月09日
    浏览(34)
  • 第九篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:使用内置组件实现响应式设计

    第一篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:从helloworld开始 第二篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:天气应用 第三篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:健身追踪 第四篇【传奇开心果系列】Ant Design Mobile of React 开发移

    2024年01月21日
    浏览(70)
  • 第十二篇【传奇开心果系列】Ant Design Mobile of React开发移动应用:内置组件实现酷炫CSS 动画

    第一篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:从helloworld开始 第二篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:天气应用 第三篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:健身追踪 第四篇【传奇开心果系列】Ant Design Mobile of React 开发移

    2024年01月20日
    浏览(60)
  • 第十篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:涉及到的相关基础知识介绍和示例

    第一篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:从helloworld开始 第二篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:天气应用 第三篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:健身追踪 第四篇【传奇开心果系列】Ant Design Mobile of React 开发移

    2024年01月20日
    浏览(52)
  • vue3+ant design vue+ts实战【ant-design-vue组件库引入】

    🔥🔥更多内容见Ant Design Vue官方文档 🔥点击复习vue3【watch检测/监听】相关内容 👏👏👏一个好项目的编写不仅需要完美的逻辑,以及相应的技术,同时也需要一个 设计规范的高质量UI组件库 。👏👏👏本期文章将会详细讲解 Ant Design of Vue 组件库的 安装、使用、引入 。

    2024年02月02日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包