项目是基于dingyou-dingtalk-mobile脚手架的一个微应用,这个脚手架使用的UI是antd-mobile,它提供了一个图片上传的组件,但是未提供图片预览的组件,在网上找了不少如何在react项目中实现图片预览查看的功能,大多数都是基于react-native的,比如https://segmentfault.com/a/1190000010090233里面所说的react-wx-images-viewer组件,以及https://www.jianshu.com/p/6374a1ec3f01里介绍的react-native-photo-browser组件,但是这个脚手架未引用到react-native,试着在该脚手架上安装react-native,进而使用这些组件,但是都报错了,无法实现。
看了下钉钉官方推荐的saltui,里面提供了图片预览的的功能,可参看https://salt-ui.github.io/components/image-viewer,立即按照其说明进行了安装。
打开nowaGui对于项目下的终端,输入以下命令行即可安装。
npm install saltui --save
接下来是在页面上的引用。加入以下两句即可。(当时在引用的时候少加了dd.css,导致一直没有使用成功,以为在这个脚手架中只能使用一种ui呢。)
import { ImageViewer,Boxs } from 'saltui';
import 'saltui/build/dd.css';
接下来即是获取图片数据、填充进组件里即可了
show =(index)=>{ ImageViewer.show({
photos: this.listForImageLook(this.state.imagesList),
current: index,
}); }
const listForImage = (imagesList) => {
let images = [];
for(let i = 0; i < imagesList.length; i++) { let m = {url : AUTH_URL + 'appImages/' + imagesList[i].imageName,id : imagesList[i].id}; images.push(
<Box>
<img src={AUTH_URL + 'appImages/' + imagesList[i].imageName} className="demo3-t-list-img"
onClick={this.show.bind(this,i)}/>
</Box> );
} return images;
}
<div style={{display: this.state.imagesList.length == 0 ? 'none' : ''}}>
<WhiteSpace size="lg" /> <Card>
<Card.Header
title={<span><font color="gray"> * </font>图片</span>}
/>
<Card.Body style={{width : '90%'}}>
<HBox vAlign="center">
<HBox flex={1}>
{listForImage(this.state.imagesList)}
</HBox>
</HBox>
</Card.Body> </Card>
</div>