使用Taro 开发一个图片列表的页面,需要支持图片预览,
原先以为是modal+image 即可,Taro.previewImage 在h5无法缩放图片,但产品说希望像微信预览图片一样,可以放大缩小
但Taro 没有支持的组件,网上搜索了下,找到 react-photo-view 插件
利用此插件封装了一下组件,贴上代码
interface IProps {
visible: boolean;
current: number;
urls: string[];
onClose: () => void;
onChange: (arg: number) => void;
photoClosable?: boolean;
}
const PreviewImage: React.FC<IProps> = ({
visible,
current,
urls,
onClose,
onChange,
photoClosable = false,
...rest
}) => {
return (
<PhotoProvider {...rest}>
<PhotoSlider
images={urls.map((item) => ({ src: item }))}
photoClosable={photoClosable}
visible={visible}
onClose={onClose}
index={current}
onIndexChange={onChange}
/>
</PhotoProvider>
);
};
export default PreviewImage;
但是存在问题,ios的长按和photoClosable的点击关闭预览事件冲突(和产品沟通,取消photoClosable这个,因为本身这个组件点击图片之外的区域和右上角「x」可以关闭)
使用如下
<PreviewImage
visible={isOpened}
current={currentPic}
urls={ImageList}
onClose={() => setIsOpened(false)}
onChange={(index) => setCurrentPic(index)}
/>