当前位置: 代码网 > it编程>编程语言>Javascript > React使用Ant Design方式(简单使用)

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

2024年11月25日 Javascript 我要评论
react使用ant design方式在这里介绍一下,这个ant design组件库 是与我们的 element 组件是一样的,使用方法大致相似。antd 是基于 ant design 设计体系的 r

react使用ant design方式

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

antd 是基于 ant design 设计体系的 react ui 组件库,主要用于研发企业级中后台产品。

ant design特性

  • 提炼自企业级中后台产品的交互语言和视觉风格。
  • 开箱即用的高质量 react 组件。
  • 使用 typescript 开发,提供完整的类型定义文件。
  • 全链路开发和设计工具体系。
  • 数十个国际化语言支持。
  • 深入每个细节的主题定制能力。

话不多说,快速上手

我们首先先下载 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;

然后启动我们的项目:

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com