React

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > React > React使用Ant Design

React使用Ant Design方式(简单使用)

作者:随笔写

文章介绍了AntDesign组件库,它是基于AntDesign设计体系的ReactUI组件库,主要用于研发企业级中后台产品,文章详细讲解了如何下载和按需引入antd组件库,并通过一个小案例展示了如何使用antd进行布局和改造,最后,文章提醒大家在使用过程中可以参考官网的属性介绍

React使用Ant Design方式

在这里介绍一下,这个Ant Design组件库 是与我们的 element 组件是一样的,使用方法大致相似。

antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。

Ant Design特性

话不多说,快速上手

我们首先先下载 antd 组件库。

npm install antd --save

以下代码是根据我们的需求 来按需引入。

import React from "react";
import ReactDOM from "react-dom";
import { Button, DatePicker, version } from "antd";
import "antd/dist/antd.css";
import "./index.css";

ReactDOM.render(
  <div className="App">
    <h1>antd version: {version}</h1>
    <DatePicker />
    <Button type="primary" style={{ marginLeft: 8 }}>
      Primary Button
    </Button>
  </div>,
  document.getElementById("root")
);

效果图:

来看一下做的一个小案例

我们项目的大致结构:

可以看到有很多的布局方式。

我们选取其中一个,点击<>。

可以展开相应布局的代码。

点击右上角的复制代码,复制到我们的页面中,导入相应的依赖包,然后稍加进行改造。(注意绿色粗体加大的部分的区别)

import React, { Component } from 'react';
import Table from '../Table/Table'
import './List.css'

import { Layout, Menu, Breadcrumb } from 'antd';
import { UserOutlined, LaptopOutlined, NotificationOutlined } from '@ant-design/icons';

const { SubMenu } = Menu;
const { Header, Content, Sider } = Layout;


class List extends Component {
    render() {
        return (
            <div className="List">

                <Layout>
                    <Header className="header">
                        <div className="logo" />
                        <Menu theme="dark" mode="horizontal" defaultSelectedKeys={['2']}>
                            <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} className="site-layout-background">
                            <Menu
                                mode="inline"
                                defaultSelectedKeys={['1']}
                                defaultOpenKeys={['sub1']}
                                style={{ height: '100%', borderRight: 0 }}
                            >
                                <SubMenu key="sub1" icon={<UserOutlined />} title="subnav 1">
                                    <Menu.Item key="1">option1</Menu.Item>
                                    <Menu.Item key="2">option2</Menu.Item>
                                </SubMenu>
                                <SubMenu key="sub2" icon={<LaptopOutlined />} title="subnav 2">
                                    <Menu.Item key="5">option5</Menu.Item>
                                    <Menu.Item key="6">option6</Menu.Item>
                                </SubMenu>
                                <SubMenu key="sub3" icon={<NotificationOutlined />} title="subnav 3">
                                    <Menu.Item key="9">option9</Menu.Item>
                                    <Menu.Item key="10">option10</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
                                className="site-layout-background"
                                style={{
                                    padding: 24,
                                    margin: 0,
                                    minHeight: 280,
                                }}>
                                <Table />
                            </Content>
                        </Layout>
                    </Layout>
                </Layout>

            </div>
        );
    }
}

export default List;
import React, { Component } from 'react';
import {
    Table, Tag, Space, Button, message, Popconfirm, Modal, Input, Form
} from 'antd';

import { getList } from '../../Api/Api'

class Tabless extends Component {
    state = {
        //获取的数据列表
        list: [],

        // 列表的配置
        columns: [
            {
                title: 'Id号',
                dataIndex: 'id',
                key: 'id',
            },
            {
                title: 'Conmment内容',
                dataIndex: 'conmment',
                key: 'conmment',
            },
            {
                title: 'time时间',
                dataIndex: 'time',
                key: 'time',
            },
            {
                title: 'Done等级',
                key: 'done',
                dataIndex: 'done',
                render: done => (
                    <>
                        {done === 0 ? <Tag color="magenta">一级</Tag> :
                            done === 1 ? <Tag color="gold">二级</Tag> :
                                <Tag color="blue">三级</Tag>}
                    </>
                )
            },
            {
                title: 'Action操作',
                key: 'action',
                render: (spcord) => (
                    <Space size="middle">
                        <Button type='primary' size='small' onClick={this.edit_dhk.bind(this, spcord)}>修改</Button>
                        {/* 气泡确认框 */}
                        <Popconfirm
                            title="你是否真正的要删除这条数据?"
                            onConfirm={this.del.bind(this, spcord.id)}
                            onCancel={this.no_.bind(this)}
                            okText="Yes"
                            cancelText="No"
                        >
                            <Button type='danger' size='small' >删除</Button>
                        </Popconfirm>
                    </Space>
                ),
            },
        ],

        // 是否打开添加对话框
        visible: false,

        //定义添加的数据表单
        fromList: {
            conmment: '',
            done: 0
        },

        //暂时获取修改数据的对象
        edit_from: {},

        //是否打开修改的对话框
        visible1: false
    }

    componentDidMount() {
        this.hqsj()
    }

    //获取数据
    async hqsj() {
        const { data: msg } = await getList('resu/', 'get')
        console.log(msg.data);
        this.setState({ list: msg.data })
    }

    //删除数据
    async del(id) {
        const { data: msg } = await getList('resu/', 'delete', { id: id })
        console.log(msg);
        if (msg.code === 200) {
            message.success('删除成功!')
            this.hqsj()
        }

    }

    //取消删除
    no_() {
        message.warning('取消删除!')
    }

    //打开添加数据对话框
    dhk() {
        this.setState({ visible: true })
    }

    //添加数据确定按钮
    async hideModal() {
        const { data: msg } = await getList('resu/', 'post', this.state.fromList)
        console.log(msg);
        if (msg.code === 200) {
            message.success('添加成功')
            this.setState({ visible: false })
            this.hqsj()
        }
    }

    //添加数据取消按钮 关闭对话框
    hideModelout() {
        message.warning('取消此操作!')
        this.setState({ visible: false })
        this.setState({ visible1: false })
    }

    //监测表单添加时 赋值给state
    ch(n, e) {
        if (n === 'conmment') {
            var fromList1 = this.state.fromList
            fromList1.conmment = e.target.value
            this.setState({ fromList: fromList1 })
        } else {
            var fromList1 = this.state.fromList
            fromList1.done = e.target.value
            this.setState({ fromList: fromList1 })
        }
    }

    //点击修改按钮 打开对话框
    edit_dhk(item) {
        console.log(item);
        this.setState({ edit_from: item })
        this.state.visible1 = true
    }

    ch2(n, e) {
        if (n === 'conmment') {
            var edit_from1 = this.state.edit_from
            edit_from1.conmment = e.target.value
            this.setState({ edit_from: edit_from1 })
        } else {
            var edit_from1 = this.state.edit_from
            edit_from1.done = e.target.value
            this.setState({ edit_from: edit_from1 })
        }
    }

    //提交修改请求
    async edit_ok() {
        const { data: msg } = await getList('resu/', 'post', this.state.edit_from)
        if (msg.code === 200) {
            message.success('修改成功!')
            this.state.visible1 = false
            this.hqsj()
        }
    }

    render() {
        return (
            <div>
                <Button type='primary' style={{ margin: "20px 0" }} onClick={this.dhk.bind(this)}>添加数据</Button>
                {/* 数据表格 */}
                <Table columns={this.state.columns} dataSource={this.state.list} rowKey={rec => rec.id} />

                {/* 添加数据对话框 */}
                <Modal
                    title="添加数据"
                    // 根据状态是否显示对话框
                    visible={this.state.visible}

                    onOk={this.hideModal.bind(this)}
                    onCancel={this.hideModelout.bind(this)}
                    okText="确认"
                    cancelText="取消"
                >

                    {/* 表单 */}
                    <Form
                        name="basic"
                        labelCol={{ span: 8 }}
                        wrapperCol={{ span: 16 }}
                        style={{ paddingRight: "87px", boxSizing: "border-box" }}
                    >
                        <Form.Item label="Conmment" >
                            <Input placeholder="请输入主要内容" onChange={this.ch.bind(this, 'conmment')} />
                        </Form.Item>
                        <Form.Item label="Done" >
                            <Input placeholder="请输入等级(0:等级一,1:等级二,2:等级三)" onChange={this.ch.bind(this, 'done')} />
                        </Form.Item>
                    </Form>



                </Modal>

                {/* 修改数据的对话框 */}
                <Modal
                    title="添加数据"
                    // 根据状态是否显示对话框
                    visible={this.state.visible1}

                    onOk={this.edit_ok.bind(this)}
                    onCancel={this.hideModelout.bind(this)}
                    okText="确认"
                    cancelText="取消"
                >

                    {/* 表单 */}
                    <Form
                        name="basic"
                        labelCol={{ span: 8 }}
                        wrapperCol={{ span: 16 }}
                        style={{ paddingRight: "87px", boxSizing: "border-box" }}
                        initialValues={this.state.edit_from}
                    >
                        <Form.Item label="Conmment" name='conmment'>
                            <Input placeholder="请输入主要内容" onChange={this.ch2.bind(this, 'conmment')} />
                        </Form.Item>
                        <Form.Item label="Done" name='done'>
                            <Input placeholder="请输入等级(0:等级一,1:等级二,2:等级三)" onChange={this.ch2.bind(this, 'done')} />
                        </Form.Item>
                    </Form>


                </Modal>


            </div>
        );
    }
}

export default Tabless;

然后启动我们的项目:

最后,在官网的最下方还会有一些属性的介绍,如果有需要修改的属性可以参考。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文