热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

react使用antd的在图片列表或表格中实现点击其他元素Checkbox选中功能

antd官网上的Checkbox功能只能单独使用,在表格中加入Checkbox也只能点击Checkbox按钮才能实现选中或取消功能如果我们要实在表格行中点击或在图片列

antd官网上的Checkbox功能只能单独使用,在表格中加入Checkbox也只能点击Checkbox按钮才能实现选中或取消功能

如果我们要实在表格行中点击或在图片列表中点击图片就能实现选中或取消,就需要单独添加事件,然后使用该事件对Checkbox操作的数组进行操作,才能实现该功能,

简单来说就是为需要添加功能的地方再绑定一个事件,与Checkbox操作同一个数据 就可以了

先来看如何实现点击 表格行来选中或取消,这里有一个网上的例子可以贴出来 

https://codesandbox.io/s/000vqw38rl   【作者:doublealoe】

 

 

import React from 'react';
import ReactDOM from
'react-dom';
import
'antd/dist/antd.css';
import
'./index.css';
import { Table } from
'antd';const columns = [{title: 'Name',dataIndex: 'name',render: text => {text},
}, {title: 'Age',dataIndex: 'age',
}, {title:
'Address',dataIndex: 'address',
}];const data
= [{key: '1',name: 'John Brown',age: 32,address: 'New York No. 1 Lake Park',
}, {key:
'2',name: 'Jim Green',age: 42,address: 'London No. 1 Lake Park',
}, {key:
'3',name: 'Joe Black',age: 32,address: 'Sidney No. 1 Lake Park',
}, {key:
'4',name: 'Disabled User',age: 99,address: 'Sidney No. 1 Lake Park',
}];class App extends React.Component {state
&#61; {selectedRowKeys: [],};selectRow &#61; (record) &#61;> {console.log("record---", record);const selectedRowKeys &#61; [...this.state.selectedRowKeys];if (selectedRowKeys.indexOf(record.key) >&#61; 0) {selectedRowKeys.splice(selectedRowKeys.indexOf(record.key), 1);} else {selectedRowKeys.push(record.key);}this.setState({ selectedRowKeys });}onSelectedRowKeysChange &#61; (selectedRowKeys) &#61;> {this.setState({ selectedRowKeys });}render() {const { selectedRowKeys } &#61; this.state;const rowSelection &#61; {selectedRowKeys,onChange: this.onSelectedRowKeysChange,};return (<TablerowSelection&#61;{rowSelection}columns&#61;{columns}dataSource&#61;{data}onRow&#61;{(record) &#61;> ({onClick: () &#61;> {this.selectRow(record);},})}/>
);}
}ReactDOM.render(
, document.getElementById(&#39;container&#39;));

 

 

 

二&#xff0c;实现图片列表选中功能

import React from "react";
import {Modal,Table,Button,Checkbox,Card,Popconfirm } from
&#39;antd&#39;;
import LoadingMixin from
&#39;../../../libs/loading.common.mixin&#39;;
import RequestMixin from
&#39;../../../libs/request.mixin&#39;;
import NotificationMixin from
&#39;../../../libs/notification.mixin&#39;;
import Helper from
&#39;../../../libs/helper&#39;;
import
&#39;./index.css&#39;;const { Meta } &#61; Card;
const CheckboxGroup
&#61; Checkbox.Group;
export
default React.createClass({mixins: [LoadingMixin, NotificationMixin, RequestMixin],propTypes: {onManualClose:React.PropTypes.func,onOk: React.PropTypes.func,onCancel: React.PropTypes.func,title: React.PropTypes.string,item: React.PropTypes.object},getInitialState() {return {item: this.props.item && this.props.item || {},data: [],userObj: {},deleteList:[],indeterminate: false,checkAll: false,checkedList:[]};},componentWillMount() {this.fetch();},fetch() {// console.log("11111111111------------》",this.props.item.frameid);this.post({url: "Api/historyPush/module/frame/key/dac509bd90a82719a3569291e12c24a6f1af4bac",param: {frameid: this.props.item.frameid// frameid:&#39;32frame_tj1&#39;
},noLoading: true}).then(result&#61;> {// console.log("result-----------------",result);this.setState({data: result.result || []});});},hideModal() {this.props.onCancel && this.props.onCancel();},onChange(checkedList){console.log(&#39;checked &#61; &#39;, checkedList);this.setState({checkedList:checkedList,indeterminate: !!checkedList.length && (checkedList.length <this.state.data.length),checkAll: checkedList.length &#61;&#61;&#61; this.state.data.length,});},onclicks(e){const checkedList &#61; [...this.state.checkedList]if (checkedList.indexOf(e) >&#61; 0) {checkedList.splice(checkedList.indexOf(e), 1);} else {checkedList.push(e);}this.setState({ checkedList});},onCheckAllChange(e){// console.log("全选1",e.target.checked);// console.log("全选2",this.state.data);let dataList &#61;[]for(var i&#61;0;i<this.state.data.length;i&#43;&#43;){dataList[i]&#61;this.state.data[i].imgid}// console.log("dataList--------",dataList)this.setState({checkedList: e.target.checked ? dataList : [],indeterminate: false,checkAll: e.target.checked,});},handleClose(record) {var that &#61; this;if (this.state.checkedList&#61;&#61;null||this.state.checkedList.length&#61;&#61;0) {that.error("请选择要删除的图片");return false;};// console.log("删除的图片",this.props.item.frameid,this.state.checkedList);this.post({url: "Api/clearCache/module/frame/key/dac509bd90a82719a3569291e12c24a6f1af4bac",param: {frameid:this.props.item.frameid,imglist: this.state.checkedList},noLoading: true}).then(result&#61;> {if (result.result) {that.success("操作成功");that.fetch();}});},render() {let isMainObj &#61; {1 : "是",0 : "否"}let columns &#61; [{ title: &#39;用户&#39;, dataIndex: &#39;userid&#39;, key: &#39;userid&#39;, width: &#39;20%&#39;,render: (text, record) &#61;> {return (this.state.userObj && this.state.userObj[text])}},{ title: &#39;主管理&#39;, dataIndex: &#39;is_main&#39;, key: &#39;is_main&#39;, width: &#39;20%&#39;,render: (text, record) &#61;> {return (isMainObj[record[&#39;is_main&#39;]])}},{ title: &#39;设备备注&#39;, dataIndex: &#39;remark&#39;, key: &#39;remark&#39;, width: &#39;30%&#39; },{ title: &#39;绑定时间&#39;, dataIndex: &#39;create_time&#39;, key: &#39;create_time&#39;, width: &#39;25%&#39; }];return (this.props.title && this.props.title || &#39;新增&#39;} visible&#61;{true} width&#61;"700px" onCancel&#61;{this.hideModal} maskClosable&#61;{false} footer&#61;{}>

<Checkboxindeterminate&#61;{this.state.indeterminate}onChange&#61;{this.onCheckAllChange}checked&#61;{this.state.checkAll}// checked&#61;{this.state.checked}// disabled&#61;{this.state.disabled}// onChange&#61;{this.onChange} //this,record>{&#39;全选&#39;}this.handleClose} okText&#61;"确定" cancelText&#61;"取消">
this.onChange} value&#61;{this.state.checkedList}>{this.state.data && this.state.data.map((item,index) &#61;> {return (<CheckboxclassName&#61;{&#39;CheckboxStyle&#39;}value&#61;{item.imgid}>this.onclicks.bind(null,item.imgid)} >
)})}
,

)}
});

 

 

主要逻辑

onclicks(e){const checkedList &#61; [...this.state.checkedList]if (checkedList.indexOf(e) >&#61; 0) {checkedList.splice(checkedList.indexOf(e), 1);} else {checkedList.push(e);}this.setState({ checkedList});},

 

转:https://www.cnblogs.com/zhixi/p/10233730.html



推荐阅读
  • 前端库Bootstrap框架:「11]使用 span 创建行内元素
    前端库Bootstrap框架:「11]使用 span 创建行内元素 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 我正在尝试使用scrapycrallsingle运行完美运行的scrapy蜘蛛,但我无法在python脚本中运行它.主要问题是从不执行SingleBlogSpider.parse方 ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
  • 点击后defaultEducation的值明明改变了,但props传给子组件却watch不到 ... [详细]
author-avatar
新葡京开户
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有