react antd表格中渲染一张或多张图片的实例


Posted in Javascript onOctober 28, 2020

使用antd table中显示一张图片,代码如下:

const columns = [ {
 title: "姓名",
 dataIndex: "name",
 width: 100 , // table列定宽 可不设
  fixed: "left" // 固定列的位置
 },
 {
 title: "联系电话",
 width: 150,
 dataIndex: "phone"
 },
 {
 title:"显示一张图片",
 width:150,
 dataIndex:"img",
 render:(text)=> <img src={text}/>
 },
 {
 title:"显示多张图片",
 width:400,
 dataIndex:"imgs",
 render: text => {
 // text是后端传的多个url,需要逗号分隔再显示图片
  if (text) {
  return (
   <div style={{ display: "flex" }}>
   {text.split(",").map((items, index) => {
    return (
    <div
     key={index}
     className="common-img-list"
     style={{
     width: "100px",
     height: "100px",
     marginLeft: "4px",
     overflow: "hidden"
     }}
    >
     <img
     style={{ width: "100%" }}
     src={items}
     onClick={() => {
      InitImageViwer(); // 点击放大图片
     }}
     />
    </div>
    );
   })}
   </div>
  );
  }
 },
]

// 点击放大图片预览
function InitImageViwer(
 box = 'common-img-list', // 注意class不要忘记了
 option = {},
 callBack
) {
 setTimeout(() => {
 const viewList = []
 const el = document.querySelectorAll(`.${box}`)
 if (el.length) {
  el.forEach((z, x) => {
  viewList[x] = new ImageViewer(z, option)
  })
  callBack && callBack(viewList)
 }
 }, 1000)
}

// table 使用 scroll 表格滚动
<Table columns={columns} scroll={{ x: 1500, y: 500 }} />

实现效果图:

react antd表格中渲染一张或多张图片的实例

点击图片放大预览效果:

react antd表格中渲染一张或多张图片的实例

补充知识:React中antd框架下upload多个图片简单上传

antd的上传组件也是挺好康的,预览、删除也特别方便。适合表单上传。

查询资料多个上传处理 不明确,我就在下面name为file的input隐藏域内储存多个图片上传

这行代码是限制多个图片上传的总数,这里目前是不能超过6张图片,到达六张图片后,点击上传的按钮将会消失。

{this.props.tAccessory >= 6 ? null : uploadButton}

点击眼睛会弹出modl框扩大显示图片。

react antd表格中渲染一张或多张图片的实例

全文代码如下,稍加修改即可使用。

import React from 'react';
import { Form, Input,Upload,Icon,Modal} from 'antd';
import { connect } from 'dva';
const FormItem = Form.Item;
const { TextArea } = Input;
function getBase64(file) {
 return new Promise((resolve, reject) => {
 const reader = new FileReader();
 reader.readAsDataURL(file);
 reader.onload = () => resolve(reader.result);
 reader.onerror = error => reject(error);
 });
}
class AddMa extends React.Component {
 state = {
 value: '',
 previewVisible: false,
 previewImage: '',
 fileList:[],
 };
 onChange = ({ target: { value } }) => {
 this.setState({ value });
 };
//场地图片
 handleCancel = () => this.setState({ previewVisible: false });
 handlePreview = async file => {
 if (!file.url && !file.preview) {
  file.preview = await getBase64(file.originFileObj);
 }
 this.setState({
  previewImage: file.url || file.preview,
  previewVisible: true,
 });
 console.log(file);
 };
 handleChange = ({ fileList }) => this.setState({ fileList:fileList });
 beforeUpload=(file)=>{
  this.setState(({
  fileList: [this.state.fileList, file],
  }));
 return false;
 }
 render() {
 const { previewVisible, previewImage, fileList,value} = this.state;
 const uploadButton = (
  <div>
  <Icon type="plus" />
  <div className="ant-upload-text">Upload</div>
  </div>
 );
 const { getFieldDecorator } = this.props.form;
 const formItemLayout = {
  labelCol: { span: 8 },
  wrapperCol: { span: 10 },
 };
 const props={fileList};
 return (
  <div>
  <Form>
   <FormItem{...formItemLayout} label="现场图片">
   {getFieldDecorator('fileList',{initialValue:this.props.tAccessory,valuePropName: 'file'})
   (
    <div >
    <Upload name="file" {...props}
      listType="picture-card"
      onPreview={this.handlePreview}
      onChange={this.handleChange}
      fileList={fileList}
      accept=".jpg,.png,.gif,.jpeg"
      beforeUpload={this.beforeUpload}
    >
     {this.props.tAccessory >= 6 ? null : uploadButton}
    </Upload>
    <Modal visible={previewVisible} footer={null} onCancel={this.handleCancel}>
     <img alt="example" style={{ width: '100%' }} src={previewImage} />
    </Modal>
    </div>
   )}</FormItem>
   
  //这里是多个上传获取到的PhotoList 
   <FormItem{...formItemLayout} >
   {getFieldDecorator('file',{initialValue:this.props.tAccessory,valuePropName: 'file'})
   (
    <input type="hidden" name="img" multiple="multiple" />
   )}</FormItem>
  </Form>
  </div>
 );
 }
}

function mapStateToProps(state) {
 const {csIntro,arPicture,tCsInfo,modelResult,tAccessory} = state.cusy;
 return {csIntro,arPicture,tCsInfo,modelResult,tAccessory};
}

export default connect(mapStateToProps)(Form.create()(AddMa));

以上这篇react antd表格中渲染一张或多张图片的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用Mootools动态添加Css样式表代码,兼容各浏览器
Dec 12 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
使用ajax+jqtransform实现动态加载select
Dec 01 Javascript
动态加载jQuery的方法
Jun 16 Javascript
Bootstrap每天必学之按钮(Button)插件
Apr 25 Javascript
JavaScript每天必学之数组和对象部分
Sep 17 Javascript
用jmSlip编写移动端顶部日历选择控件
Oct 24 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
详解如何使用webpack打包Vue工程
May 27 Javascript
vue中各组件之间传递数据的方法示例
Jul 27 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 Javascript
JavaScript类型相关的常用操作总结
Feb 14 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 #Javascript
js实现详情页放大镜效果
Oct 28 #Javascript
用js实现放大镜效果
Oct 28 #Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 #Javascript
WebStorm中如何将自己的代码上传到github示例详解
Oct 28 #Javascript
原生JS生成指定位数的验证码
Oct 28 #Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 #Javascript
You might like
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
php中文验证码实现示例分享
2014/01/12 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
js实现继承的5种方式
2015/12/01 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
浅谈Vue.js
2017/03/02 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
PHP两种查询函数array/row的区别
2013/06/03 面试题
程序员跳槽必看面试题总结
2013/06/28 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
行政管理人员精品工作推荐信
2013/11/04 职场文书
电工技术比武方案
2014/05/11 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
公司保密管理制度
2015/08/04 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript