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 相关文章推荐
extjs 学习笔记(二) Ext.Element类
Oct 13 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
详细讲解JavaScript中的this绑定
Oct 10 Javascript
微信开发 消息推送实现代码
Oct 21 Javascript
jQuery Ajax全解析
Feb 13 Javascript
Bootstrap响应式表格详解
May 23 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
原生JavaScript实现的简单放大镜效果示例
Feb 07 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
vue-router+nginx 非根路径配置方法
Jun 30 Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 Javascript
vue 解决遍历对象显示的顺序不对问题
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
php empty函数 使用说明
2009/08/10 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
python实现简单遗传算法
2018/03/19 Python
详解python编译器和解释器的区别
2019/06/24 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
python实现网页录音效果
2020/10/26 Python
办公室文员工作自我评价
2013/12/01 职场文书
信息系统专业个人求职信范文
2013/12/07 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
致青春观后感
2015/06/09 职场文书
素质拓展训练感想
2015/08/07 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
MySQL 分页查询的优化技巧
2021/05/12 MySQL
python批量创建变量并赋值操作
2021/06/03 Python
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android