美文网首页RN
react-native-swiper 使用中遇到的问题

react-native-swiper 使用中遇到的问题

作者: 一直搬着砖 | 来源:发表于2017-12-28 15:21 被阅读3039次

在网上搜索react-native-swiper,出来的都是官方的例子或者其变种。在开发过程中,我需要实现一个banner轮播,按道理讲,使用react-native-swiper是最合适的,所以,我就将其添加到项目中,然后开始集成。我的轮播图是从接口请求的数据,然后进行展示的, 我的代码类似下面这样:

var swiper = (this.state.bannerData.map((item, key) => {
            let imageURL = URLHelper.image + "?path=" + item.ban_Picture;
            return (
                <View key={item.ban_Picture} style={{
                    flex: 1,
                    justifyContent: 'center',
                    backgroundColor: '#97CAE5'
                }} title={<Text numberOfLines={1}>Why Stone split from Garfield</Text>}>
                    <Image style={{width: '100%', height: '100%'}}
                           source={{uri: imageURL}}></Image>
                </View>
            )
        }));
<Swiper
                        onIndexChanged={(index) =>
                            this.bannerIndexChange(index)
                        }
                        autoplay={true}
                        horizontal={true}
                        loop={true}
                        renderPagination={(index, total, context) => {
                            return (
                                <View style={{
                                    position: 'absolute',
                                    bottom: 10,
                                    right: 10
                                }}>
                                    <Text style={{color: 'grey'}}>
                                        <Text style={{
                                            color: 'white',
                                            fontSize: 20
                                        }}>{index + 1}</Text>/{total}
                                    </Text>
                                </View>
                            );
                        }
                        }
                    >
                       {swiper}
                    </Swiper>

这样集成以后的问题就是,监听不到轮播图的切换(如果是显示圆点,圆点就一直停留在第一个),
如果我把代码改成下面这样,就OK了,一切都正常。

<Swiper
       onIndexChanged={(index) =>
                          this.bannerIndexChange(index)
                        }
                        autoplay={true}
                        horizontal={true}
                        loop={true}
                        renderPagination={(index, total, context) => {
                            return (
                                <View style={{
                                    position: 'absolute',
                                    bottom: 10,
                                    right: 10
                                }}>
                                    <Text style={{color: 'grey'}}>
                                        <Text style={{
                                            color: 'white',
                                            fontSize: 20
                                        }}>{index + 1}</Text>/{total}
                                    </Text>
                                </View>
                            );
                        }
                        }
                    >
                        <View key={this.state.bannerData[0].ban_Picture} style={{
                            flex: 1,
                            justifyContent: 'center',
                            backgroundColor: '#97CAE5'
                        }} title={<Text numberOfLines={1}>Why Stone split from Garfield</Text>}>
                            <Image style={{width: '100%', height: '100%'}}
                                   source={{uri:URLHelper.image + "?path=" +
                                       this.state.bannerData[0].ban_Picture}}></Image>
                        </View>

                        <View key={this.state.bannerData[1].ban_Picture} style={{
                            flex: 1,
                            justifyContent: 'center',
                            backgroundColor: '#97CAE5'
                        }} title={<Text numberOfLines={1}>Why Stone split from Garfield</Text>}>
                            <Image style={{width: '100%', height: '100%'}}
                                   source={{uri:URLHelper.image + "?path=" +
                                   this.state.bannerData[1].ban_Picture}}></Image>
                        </View>
                    </Swiper>

也就是说,轮播图中的多个元素分开写是没有问题的,但是如果使用循环(for或者其他遍历方式)就会有问题,我尝试了各种模仿官方例子的方式修改代码都无济于事。希望有遇到相同问题的同学可以一起讨论,如果您已经解决,麻烦指点一下,不胜感激。

已经解决:只需要在for循环的时候元素后面添加一个空行,是的,你没有看错就是一个或者多个空行。

相关文章

网友评论

  • 0a4b368ff4cc:我试了在循环后添加换行但不生效,是不是我添加的地方有问题啊
    不想重复造轮子:@瞌睡农 兄弟 怎么我加了key 也不行
    懒闲生:@瞌睡农 算了 我自问自答吧 https://github.com/leecade/react-native-swiper/issues/723
    懒闲生:兄弟 你这个bug 改好了吗?
  • 5ec1da87f063:.......后台返回数据你不循环,单独怎么写???????
    一直搬着砖:@5ec1da87f063 没懂你什么意思。我这里也是后台返回的数据,数据是本地或者网络的都一样。
  • fba0f7a00e6a:问一下,为何Android里面的小圆点不显示.iOS一切正常.
  • 一直搬着砖:突发灵感,因为循环的时候</View>结束的地方没有换行,一个元素一个元素的写的时候,会有换行,所以,我在遍历的代码里面结尾的地方打了一个换行(按了一下enter键),everything is ok!
    坑!
    不想重复造轮子:还是不行 你能贴下代码吗 怎么换行都不行
    0ab3066e7dbe:@陈德湾 解决了嘛,兄弟,我也遇到了。
    一脸懵逼
    陈德湾:兄弟,我遇到跟你一样的情况,我for循环的,但是后面加了换行,也没用额,指示器还是一直指向第一个

本文标题:react-native-swiper 使用中遇到的问题

本文链接:https://www.haomeiwen.com/subject/ptkvgxtx.html