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玩转继承(一)
May 08 Javascript
Javascript实现计算个人所得税
May 10 Javascript
深入浅析JavaScript中with语句的理解
May 12 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 Javascript
Angular.JS通过指令操作DOM的方法
May 10 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
Jul 24 Javascript
Vue多种方法实现表头和首列固定的示例代码
Feb 02 Javascript
微信小程序使用npm包的方法步骤
Aug 13 Javascript
vue中npm包全局安装和局部安装过程
Sep 03 Javascript
javascript实现前端分页效果
Jun 24 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 header下载函数
2014/01/31 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
innerText 使用示例
2014/01/23 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
js实现随机点名程序
2020/09/17 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python学生管理系统开发
2019/01/30 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Django模板语言 Tags使用详解
2019/09/09 Python
python实现从wind导入数据
2019/12/03 Python
python操作redis数据库的三种方法
2020/09/10 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
JDO的含义
2012/11/17 面试题
国际贸易专业推荐信
2013/11/15 职场文书
专业见习报告范文
2014/11/03 职场文书
2014年管理工作总结
2014/11/22 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
Django实现聊天机器人
2021/05/31 Python
python scrapy简单模拟登录的代码分析
2021/07/21 Python