react + es6 +ant design 实现一个简单demo表格添加删除

首先介绍一下整体的样式及实现的效果

如图所示,点击添加按钮会接着后面新增一行,点击操作下的删除图标将会删掉一行,如果删掉序号为1的行,第二行会自动变成第一行序号也会随之改变。

ps:数据交互均还未实现。

介绍完毕:下面正题!

1.布局

import React, { Component, PropTypes } from ‘react‘;
import { Table, DatePicker, Select, InputNumber, Input, Button, Icon } from ‘antd‘;//引用了ant design中的组件需在这里引用,如:我用了table,DatePicker等组件便需要在这里引用一下,否则将会找不到组件。
import Selects from ‘./demo2Select‘;//自己定义的一个组件类引用,可不定义,在ant design中有示例可参考,也可直接在ant design中copy过来

class Details extends Component {//es6中定义的一个Details类
constructor(props) {//构造函数
super(props);
this.state = {

//初始化,初始的第一行数据

dataSource: [{
datatime: this.props.datatime,//这里的this.props.datatime可直接在这里赋值,在这里赋的值为初始值,会显示在文本框中,下面同理
applytype: this.props.applytype,
applyproject: this.props.applyproject,
money: this.props.money,
operation: this.props.operation,
}],
};
this.handleAdd = this.handleAdd.bind(this);//绑定this,这个是下面声明onClick的方法,需绑定this,在onClick事件中直接用this.handleAdd即可
this.handleDel = this.handleDel.bind(this);
}
//添加
handleAdd() {
const newDataSource = this.state.dataSource;//将this.state.dateSource赋给newDataSource

newDataSource.push({//newDataSource.push一个新的数组,这个数组直接将初始化中的数组copy过来即可
datatime: this.props.datatime,
applytype: this.props.applytype,
applyproject: this.props.applyproject,
money: this.props.money,
operation: this.props.operation,
});
this.setState({
dataSource: newDataSource,//将newDataSource新添加的数组给dataSource
});
}

//删除
handleDel() {
const DelDataSource = this.state.dataSource;
DelDataSource.splice(event.target.getAttribute(‘data-index‘), 1);//data-index为获取索引,后面的1为一次去除几行
this.setState({
dataSource: DelDataSource,
});
}
render() {
//console.log(this.state.dataSource);
const columns = [{
title: ‘序号‘,
dataIndex: ‘key‘,
key: ‘key‘,
render: (text, record, index) => {
return <span>{index + 1}</span>//索引从零开始,所以第一行为index+1,index为render方法里面的参数,可自动获取到下标,在ant design里面有详情解释,可参考
},
}, {
title: ‘日期‘,
dataIndex: ‘datatime‘,
key: ‘datatime‘,
render: () => <DatePicker />,//DatePicker为组件
}, {
title: ‘报销类型‘,
dataIndex: ‘applytype‘,
key: ‘applytype‘,
render: () => <Selects />,
}, {
title: ‘报销项目‘,
dataIndex: ‘applyproject‘,
key: ‘applyproject‘,
render: () => <Input placeholder="报销项目" />,
}, {
title: ‘金额‘,
dataIndex: ‘money‘,
key: ‘money‘,
render: () => <InputNumber min={0.00} max={10000} step={0.1} />,
}, {
title: ‘操作‘,
dataIndex: ‘operation‘,
key: ‘operation‘,
render: (text, record, index) => {
return <Icon type="delete" data-index={index} onClick={this.handleDel} />//data-index现在为获得index的下标,上面的删除data-index即是获取index的下标
},
}];
return (
<div>
<Icon type="book" className="ant-icon" />
<span className="ant-title">报销明细</span>
<Table dataSource={this.state.dataSource} columns={columns}//this.state.dataSource即为获取初始化dataSource数组
pagination={false} bordered
/>
<button onClick={this.handleAdd}>添加</button>
</div>
);
}
}

//属性类型

Details.propTypes = {

};

//初始数据
Details.defaultProps = {

}
export default Details;

最后,需在入口文件中import引用,ReactDOM.render()渲染到浏览器就好了。

如:import Demo2Over from ‘../components/demo2over‘;

ReactDOM.render(<Demo2Over />, document.getElementById(‘root‘));

需注意:标黄色背景的地方需一样,红色背景为渲染到浏览器页面的Id名称(如:<div id="root"></div>),绿色的为我们刚刚写组件的路径。

时间: 2024-11-09 17:52:53

react + es6 +ant design 实现一个简单demo表格添加删除的相关文章

Highcharts+Ajax+Json+Sturts2实现的图形异步实时刷新的一个简单demo

原文:Highcharts+Ajax+Json+Sturts2实现的图形异步实时刷新的一个简单demo 源代码下载地址:http://www.zuidaima.com/share/1550463370480640.htm 此功能可以用在后端对数据的实时抓取,前端动态更新时使用,可以根据数据的变化进行实时刷新,基于之前我上传的一个图形demo改制.如有意见建议,疑问,大家可以留言一起探讨. 源代码截图:

在cengos中安装zabbix server/agent, 并创建一个简单demo

添加zabbix更新源 rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm 安装 yum -y install iksemel libssh2 zabbix-server-mysql zabbix-web-mysql mysql-server zabbix-agent install net-snmp-devel net-snmp-libs net-snmp-pe

React +Redux+ Ant Design + echarts 项目实践

项目框架 采用React.js作为项目的框架 采用redux作为数据管理的框架 采用antd作为项目的UI组件 采用echarts完成项目中折线图的绘制 个人项目工作流程总结 拿到UI高保真图片之后先对整个页面进行模块化分,大的模块分为上部的折现图部分,中间部分的网元的拓扑图部分,下部分表格部分以及表格点击后的弹出层部分.每个模块有可以再次细分为模块的头部(头部数据基本不变化),以及模块的内容展示部分. 基本就这样把整个页面细分成不同的组件模块,子组件又可以组成父组件,大的父组件完整组合成整个页

使用React+Umi+Ant Design Pro实现生产环境动态切换主题,支持暗黑主题

投入前端开发也有1年的时间了,我还是很菜.在开发中还是很多技巧以及经验不够,写文章也是文笔不行,不过好在写的内容意思大概都能看懂.这次就来介绍一下我在开发过程中遇到的一些问题以及处理技巧. 两月前刚开始试用umi这个React的框架,使用AntD Pro创建好项目后,着实熟悉了几天,不过熟悉这个框架后,就觉得阿里的大佬还是牛.佩服. 事情是这样的,我们能够在AndD Pro的在线预览上看到能够动态切换主题.而实际拉下来的模板中却没有这个功能.我就开始了对比源码. 算了,先上一下项目目录结构吧,不

React之ant design的table表格序号连续自增

render(text,record,index){ return( <span>{(pagination.current-1)*10+index+1}</span> ) } 原文地址:https://www.cnblogs.com/lj8023/p/9942110.html

react 与 Ant Design 相互兼容问题,react 引入Ant Design 报错问题

antd 在 3.0 之后兼容 [email protected] 2.x 的版本请使用 [email protected] 原文地址:https://www.cnblogs.com/xsdds/p/11696966.html

web开发——写一个简单的表格导出操作

一.前台页面: 主要是一个按钮和一个表格,表格有显示数据,按钮负责将表格中的数据选择性地导出.除此外,可以附加一个小窗口和进度条,用于显示下载进度. 1. 按钮:<a href="javascript:;" class="easyui-linkbutton" iconCls="icon-redo" data-options="plain:true" id="btn-exp" onclick="

Ant Design of React的安装和使用方法

在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,给设计师和工程师带来很多困扰和重复建设,大大降低了产品的研发效率.我们(蚂蚁金服体验技术部)经过大量的项目实践和总结,沉淀出一个中台设计语言 Ant Design.旨在统一中台项目的前端 UI 设计,屏蔽不必要的设计差异和实现成本,解放设计和前端的研发资源. Ant Design 是一个致力于提升『用户』和『设计者』使用体验的中台设计语言.它模糊了产品经理.交互设计师.视觉设计师.前端工程师.开发工程师等

如何创建Pull Request,以开源项目ant design pro为例

声明:本文章也是我本人参考网络上的一些教程写的,毕竟我也是第一次为开源项目做贡献,心里难免有点小激动.所以用此文章来记录这个过程,和一些操作方式.同时留作以后可供参考. 背景:最近做了公司一个项目,具体项目我也就不说了,反正用了React+Umi+Ant Design Pro.具体情况是这样,使用官方的SettingDrawer实现了在线切换主题的功能,但是官方的控件中会有如下拷贝设置按钮一直显示. 然而我想要的效果如右图 可是我的项目上线后,不需要复制主题配置进行分享,仅开发过程中设置默认主题