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 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
BootStrap3中模态对话框的使用
Jan 06 Javascript
原生Javascript插件开发实践
Jan 09 Javascript
vue实现与安卓、IOS交互的方法
Nov 02 Javascript
关于Vue源码vm.$watch()内部原理详解
Apr 26 Javascript
基于layui实现高级搜索(筛选)功能
Jul 26 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
react中的DOM操作实现
Jun 30 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打造属于自己的MVC框架
2012/03/07 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
Smarty模板配置实例简析
2019/07/20 PHP
Prototype源码浅析 Number部分
2012/01/16 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
Django的CVB实例详解
2020/02/10 Python
python利用platform模块获取系统信息
2020/10/09 Python
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
就业自荐书
2013/12/05 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
高中校园广播稿
2014/01/11 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
孝女彩金观后感
2015/06/10 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
详解Vue router路由
2021/11/20 Vue.js
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python