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 相关文章推荐
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
Mar 06 Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
深入了解javascript中的prototype与继承
Apr 14 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
bootstrap table表格使用方法详解
Apr 26 Javascript
JavaScript面向对象程序设计创建对象的方法分析
Aug 13 Javascript
微信小程序实现电子签名并导出图片
May 27 Javascript
详解vue中在父组件点击按钮触发子组件的事件
Nov 13 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
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
PHP闭包函数详解
2016/02/13 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
深入分析js中的constructor和prototype
2012/04/07 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
Python中的变量和作用域详解
2016/07/13 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
python实现flappy bird游戏
2018/12/24 Python
python3中property使用方法详解
2019/04/23 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python实现logistic分类算法代码
2020/02/28 Python
苹果台湾官网:Apple台湾
2019/01/05 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
自荐信怎么写好
2013/11/11 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
护理心得体会范文
2016/01/22 职场文书
《藏戏》教学反思
2016/02/23 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
用python修改excel表某一列内容的操作方法
2021/06/11 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记