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;
然后启动我们的项目:
最后,在官网的最下方还会有一些属性的介绍,如果有需要修改的属性可以参考。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论