react native 使用ScrollView实现轮播图效果

废话不多说,直接上代码(由于功能比较简单就没必要简述了)

javascript 复制代码
// 轮播图的业务逻辑
startAutoPlay (data) {
    // data: 图片的数据列表
    if (this.scrollViewRef) {
      this.interval = setInterval(() => {
        const { currentIndex, itemWidth } = this.state;
        const nextIndex = (currentIndex + 1) % data.length;
        this.setState({ currentIndex: nextIndex });
        let isAnimated = true
        // 最后一张切换到第一张不要做动画
        if(nextIndex == 0){
          isAnimated = false
        }
        this.scrollViewRef.scrollTo({ x: nextIndex * itemWidth, animated: isAnimated });
      }, 2000);
    }
  }

  // 组件销毁清除定时器
  stopAutoPlay () {
    clearInterval(this.interval);
  }
javascript 复制代码
               // 轮播图的View
               <View style={styles.mainWarp}>
                  {
                    this.state.list.length > 0 && (
                      <ScrollView
                        ref={
                          ref => {
                            this.scrollViewRef = ref
                          }
                        }
                        horizontal
                        pagingEnabled
                        showsHorizontalScrollIndicator={false}
                      >
                        {this.state.list.map((item, index) => (
                          <Image
                            key={index}
                            source={{ uri: item.path }}
                            style={styles.itemImage}
                          />
                        ))}
                      </ScrollView>
                    )
                  }
                </View>
相关推荐
WYiQIU3 小时前
11月面了7.8家前端岗,兄弟们12月我先躺为敬...
前端·vue.js·react.js·面试·前端框架·飞书
谢尔登3 小时前
简单聊聊webpack摇树的原理
运维·前端·webpack
娃哈哈哈哈呀4 小时前
formData 传参 如何传数组
前端·javascript·vue.js
zhu_zhu_xia4 小时前
vue3+vite打包出现内存溢出问题
前端·vue
tsumikistep5 小时前
【前后端】接口文档与导入
前端·后端·python·硬件架构
行走的陀螺仪5 小时前
.vscode 文件夹配置详解
前端·ide·vscode·编辑器·开发实践
2503_928411566 小时前
11.24 Vue-组件2
前端·javascript·vue.js
Bigger6 小时前
🎨 用一次就爱上的图标定制体验:CustomIcons 实战
前端·react.js·icon
谢尔登6 小时前
原来Webpack在大厂中这样进行性能优化!
前端·webpack·性能优化
g***B7386 小时前
JavaScript在Node.js中的模块系统
开发语言·javascript·node.js