我是用antd pro做一个项目。有一个小需求是表格头部栏可操作。具体是表头的每一项都带一个“x”按钮,当不想展示这一栏的时候,直接点“x”,这一栏就不展示了。不展示的头部标签放一边,也可以随时加入到表格中。

先看图:

1.表头信息有个“x”,当点击了某一项,该项在表格中消失,并且该标签会在可添加表头上展示。

2.此时我“x”掉了序号,用户名两项,得到下面的效果。

3.此时我点击了 “+用户名” 标签,表格中再次展示了用户名,同时,可添加表头栏少了 “+用户名” 标签。

这项功能在ant design 上的表格组件是没有的,所以我自己在现有组件的基础上实现的。如果你想看懂下面的代码,你需要了解ant design 的表格组件的使用。

import React from 'react';import { connect } from 'dva';import GridContent from '@/components/PageHeaderWrapper/GridContent';import {  Table,  Card,  Form,  Input,  Button,  Tag,  Select,  Row,  Col,  DatePicker,  message,  Tooltip,  Icon,} from 'antd';import { ABNORMAL_AUDIT_STATUS, ABNORMAL_AUDIT_STATUS_COLOR } from '@/constants';import moment from 'moment';const { Option } = Select;const { RangePicker } = DatePicker;const FormItem = Form.Item;const risk = ['无', '低', '中', '高', '严重'];@connect(({ riskEvent, abnormalList, loading }) => ({  riskEvent,  abnormalList,  loading: loading.models.abnormalList,}))@Form.create()class AbnormalList extends React.Component {  constructor(props) {    super(props);    this.state = {      selectedData: [],      newCol: [],      colKey: {        id: 0,        username: 1,        riskLevel: 2,        riskScene: 3,        department: 4,        createTime: 5,        status: 6,        baseInfo: 7,        operatePlatform: 8,      },      columns: [        {          title: (            
this.columsControl('id')}> {' '} 序号

), dataIndex: 'id', key: '序号', }, { title: (

this.columsControl('username')}> {' '} 用户名

), dataIndex: 'username', key: '用户名', }, { title: (

this.columsControl('riskLevel')}> {' '} 风险等级

), dataIndex: 'riskLevel', key: '风险等级', sorter: true, sortDirections: ['descend'], render: text => risk[text], }, { title: (

this.columsControl('riskScene')}> {' '} 风险场景

), dataIndex: 'riskScene', key: '风险场景', render: riskScene => { const isLong = riskScene.length > 10; return ( {isLong ? ( `${riskScene.slice(0, 10)}...` ) : ( {riskScene} )} ); }, }, { title: (

this.columsControl('department')}> {' '} 部门

), dataIndex: 'department', key: '部门', render: dep => { const isLong = dep.length > 10; return ( {isLong ? ( `${dep.slice(0, 10)}...` ) : ( {dep} )} ); }, }, { title: (

this.columsControl('createTime')}> {' '} 告警时间

), dataIndex: 'createTime', key: '告警时间', }, { title: (

this.columsControl('status')}> {' '} 状态

), dataIndex: 'status', key: '状态', render: status => ( {ABNORMAL_AUDIT_STATUS[status]} ), }, { title: (

this.columsControl('baseInfo')}> 文件名

), dataIndex: 'baseInfo', key: '文件名', render: text => { const jsonData = JSON.parse(text); const name = jsonData.filename; return name ? {name} : ''; }, }, { title: (

this.columsControl('operatePlatform')}> 操作平台

), dataIndex: 'operatePlatform', key: '操作平台', }, { title: '操作', fixed: 'right', width: 80, render: (_, record) => (

{record.status === 0 ? ( { this.roamId(record.id); }} > 流转 ) : ( 流转 )}

), }, ], }; } componentWillMount() { const { dispatch } = this.props; dispatch({ type: 'abnormalList/fetchList', payload: { page: 1, pageSize: 10, filter: [], }, }); } columsControl = str => { const { colKey, columns, newCol } = this.state; const id = colKey[str]; newCol.push(columns[id]); delete columns[id]; // 此处用delete方便后续添加某项表头的时候能回到最开始的位置 this.setState({ columns, newCol }); }; addCol = (one, str, i) => { const { colKey, columns, newCol } = this.state; const id = colKey[str]; columns.splice(id, 1, one); // 替换 newCol.splice(i, 1); // 删除 this.setState({ columns, newCol }); }; handleTableChange = (pagination, filters, sorter) => { const { current, pageSize } = pagination; const { dispatch, abnormalList: { filter }, } = this.props; dispatch({ type: 'abnormalList/fetchList', payload: { page: current, pageSize, filter, sorter, }, }); }; render() { const { abnormalList, loading } = this.props; const { selectedData, columns, newCol } = this.state; const { data, page, total } = abnormalList; const rowSelection = { onChange: (selectedRowKeys, selectedRows) => { console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows); this.setState({ selectedData: selectedRowKeys }); }, getCheckboxProps: record => ({ disabled: record.name === 'Disabled User', // Column configuration not to be checked name: record.name, }), }; return (

可添加表头: {newCol.map((item, index) => ( { this.addCol(item, item.dataIndex, index); }} > +{item.key} ))}

); }}export default AbnormalList;

主要是在columns 中的title中添加点击事件。columsControl,addCol两个函数是实现的关键。

antd中tooltip换行_ant design 中实现表格头部可删除和添加相关推荐

  1. antd表格显示分页怎么取消_react + Ant Design 实现table表格分页和删除

    首先下载 antd: npm install antd --save引入:import {Table,Tag,Space,Button } from "antd";在回调函数里定义 ...

  2. Ant Design Vue 修改表格头部样式

    在网上搜了好多修改表格头部样式的,最后自己摸索出来,分享给大家,最后附上完整代码. 首先用到的是customHeaderRow这个API,类型是一个函数 1.HTML部分 <a-table si ...

  3. html5中折叠面板,Ant Design中折叠面板Collapse

    这段时间做react项目遇到一些平常并不会去在意的问题,但解决的时候又需要思考一番.这次开发用到了蚂蚁金服的UI框架Ant Design.项目中有一个模块的样式和功能用到了折叠面板Collapse组件 ...

  4. linux文件中的换行符,Linux中的换行符

    说明:本文仅供学习交流,转载请标明出处,欢迎转载! 将windows下编写的一个txt文件在Linux下打开的时候发现每行行末都会多出^M,而将Linux编写的一个txt文件在windows下打开时发 ...

  5. poi XWPFDocument 实现word中内容换行

    poi实现word表格中内容换行 实现效果图如下: 表格内容: String str = "(1)第一行\n(2)第二行"; 工具类: //获取文档docXWPFDocument ...

  6. html 换行特殊符号,html中的换行符号

    html中的换行符号: Word中向下的箭头↓符号怎么删除?手动换行符删除方法,缺失:html中的换行符号12244/11 以下是的一些我们精选的Word中向下的箭头↓符号怎么删除?手动换行符删除方法 ...

  7. python中的换行符是哪个键_对Python字符串中的换行符和制表符介绍

    对Python字符串中的换行符和制表符介绍 有关换行的问题 首先提一个问题,如下. python程序代码如下: print("I'm Bob. What's your name?" ...

  8. vue 怎么在html显示为回车_vue.js中怎么换行?

    vue.js中怎么换行?下面本篇文章给大家介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 在页面中经常会遇到自定义文本,如果文本过长就需要换行,在HTML中可以通过 标签换 ...

  9. flex中toolTip汇总

    1.toolTip换行符 <mx:Button id="btn1" toolTip="在工具条提示中&#13; 使用换行符"/> 2.设定工 ...

最新文章

  1. 美国韩国科学家纷纷开发出电子机器人“皮肤”,据称具有比人类更好的触觉...
  2. 错误 Failed to load module “canberra-gtk-module“ 解决方案
  3. 推荐一个优化分页查询的办法(分页数很大的情况)
  4. maven下载包慢解决
  5. MyBatis_1 简介
  6. python的代码在哪写_python代码在哪里编写
  7. Pytorch中RNN入门思想及实现
  8. idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
  9. 第十三章 对文本进行排序、单一和重复操作:sort命令、uniq命令
  10. 我的世界linux服务器乱码,我的世界服务器控制台使用上箭头乱码解决办法
  11. 登量子位“AI领航企业榜单”,联想用实力说话
  12. java 降低jdk版本_jdk1.7降级到1.6 | 学步园
  13. 向CentOS6.6服务器安装confluence5.4.4
  14. kubernetes 查看日志方法
  15. chmod和chown命令的用法
  16. 图数据库实战 AWS Neptune Gremlin CloudFormation
  17. IIS中间件渗透总结
  18. 电脑系统重装篇6:使用微PE工具箱制作U盘启动盘并重装系统(WePE)
  19. 数据库存储时间时区UTC,如何转换为北京时区
  20. Performs recursive(递归) glob(全局) with given suffix and rootdir,使用os.walk(rootdir)和filename.endswith(s

热门文章

  1. C++类占字节数讲解
  2. Linux网络协议栈:一个TCP链接的耗时
  3. Linux环境编程:fork系统调用及其陷阱 - 内存复用,文件不复用
  4. FD.io VPP官方邮件列表
  5. 基于Linux内核红黑树的TR069参数解析工具:树形结构+CPE RPC支持
  6. diolog js_js组件-js插件-jquery插件-dialog对话框弹层
  7. 越狱后必装软件_iOS 13全系统越狱详细教程疑难解答
  8. Hadoop单机和伪分布式环境搭建
  9. jitpack第三方依赖库使用
  10. html给box加超链接,java – 如何使用pdfbox在pdf中添加超链接