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 相关文章推荐
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
Mar 03 Javascript
jQuery时间轴插件使用详解
Jul 16 Javascript
jquery采用oop模式class类的使用示例
Jan 22 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
Vue2.0 vue-source jsonp 跨域请求
Aug 04 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
JS遍历树层级关系实现原理解析
Aug 31 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
Sep 21 Javascript
解决vue watch数据的方法被调用了两次的问题
Nov 07 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
深入讲解Java编程中类的生命周期
2016/02/05 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Django如何将URL映射到视图
2019/07/29 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
租赁意向书范本
2014/04/01 职场文书
中国入世承诺
2014/04/01 职场文书
环保口号大全
2014/06/12 职场文书
医德考评自我评价
2014/09/14 职场文书
2014年班务工作总结
2014/12/02 职场文书
公务员年度考核评语
2014/12/31 职场文书
电台广播稿范文
2015/08/19 职场文书