react-image-gallery 加入视频图片混合显示

特别是在做商城项目的时候,会有需要带有视频跟图片一起的幻灯箱展示方式,如下:

幻灯使用地址 https://blog.csdn.net/lllomh/article/details/103958205

 

这个灯箱的用法是传入

数组来做的,上面是大图,下面是导航条图片!

正常情况下直接在这里增加 一个对象把original地址换成视频连接就好就行了.

但是会出现渲染在img中,报错。这就要修改插件了。

方式就是,在这里面增加一个type字段等于 video, 然后在插件里面渲染的地方去判断,是视频就渲染video标签,反之就是图片img标签.

先找到文件:

进去是在这里文件,在这个包文件中

这里默认会是fasle会执行下面的:

重点就是下面的  在 1315行

        item.imageSet ? _react2.default.createElement(//整个不会走true
          'picture',
          {
            onLoad: function onLoad(event) {
              return _this10.handleImageLoaded(event, item);
            },
            onError: handleImageError
          },
          item.imageSet.map(function (source, index) {
            return _react2.default.createElement('source', {
              key: 'media-' + source.srcSet + '-' + index,
              media: source.media,
              srcSet: source.srcSet,
              type: source.type
            });
          }),
          _react2.default.createElement('img', {
            className: 'image-gallery-image',
            alt: item.originalAlt,
            src: itemSrc
          })
        ) : (item.type=='video'? _react2.default.createElement(//判断是否就渲染视频
            'video',{
              className:'image-gallery-video',
              src:itemSrc,
              controls:'controls'
            }
            ):
            _react2.default.createElement('img', { //不是视频就渲染图片img
            className: 'image-gallery-image',
            src: itemSrc,
            alt: item.originalAlt,
            srcSet: item.srcSet,
            sizes: item.sizes,
            title: item.originalTitle,
            onLoad: function onLoad(event) {
              return _this10.handleImageLoaded(event, item);
            },
            onError: handleImageError
        })),

然后就可以渲染出视频图片混合的幻灯了

React Native 中的 ImagePicker 组件获取到的图片是以 URI 的形式返回的,而不是公共路径。如果您需要将图片保存到公共路径中,可以使用 `react-native-fs` 这个第三方库,用于读取和写入文件系统。 以下是一个简单的示例,演示如何将 ImagePicker 返回的图片保存到公共路径中: ```javascript import React, { useState } from 'react'; import { Button, Image, View } from 'react-native'; import ImagePicker from 'react-native-image-picker'; import RNFS from 'react-native-fs'; const App = () => { const [image, setImage] = useState(null); const handleChoosePhoto = () => { const options = { mediaType: 'photo', quality: 1, }; ImagePicker.launchImageLibrary(options, response => { if (response.uri) { const folderPath = RNFS.DownloadDirectoryPath; const fileName = 'myImage.jpg'; const filePath = `${folderPath}/${fileName}`; RNFS.copyFile(response.uri, filePath).then(() => { setImage(filePath); }); } }); }; return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> {image && ( <Image source={{ uri: `file://${image}` }} style={{ width: 200, height: 200 }} /> )} <Button title="Choose Photo" onPress={handleChoosePhoto} /> </View> ); }; export default App; ``` 在上面的示例中,我们使用 `react-native-fs` 中的 `copyFile` 方法将 ImagePicker 返回的图片复制到公共路径中,并将公共路径作为 state 更新。最后,我们使用 `file://` 协议将图片加载到 Image 组件中。 希望这能帮到您!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值