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 相关文章推荐
jquery 双色表格实现代码
Dec 08 Javascript
javascript学习笔记(四) Number 数字类型
Jun 19 Javascript
ExtJS DOM元素操作经验分享
Aug 28 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
Dec 12 Javascript
JavaScript实现查找字符串中第一个不重复的字符
Dec 29 Javascript
DOM节点深度克隆函数cloneNode()用法实例
Jan 12 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
canvas实现十二星座星空图
Feb 14 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
微信公众平台获取access_token的方法步骤
Mar 29 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 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 批量删除 sql语句
2009/06/05 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
java script编程起步(第三课)
2007/01/10 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
DOM 事件流详解
2015/01/20 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
浅谈Python中的数据类型
2015/05/05 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python利用opencv保存、播放视频
2020/11/02 Python
利用python绘制正态分布曲线
2021/01/04 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
期末考试动员演讲稿
2014/01/10 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
公司面试感谢信
2014/02/01 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
董事长助理岗位职责
2015/02/11 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
法律服务所工作总结
2015/08/10 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书