ReactNative 基础 - 13 (FlatList横向滚动,实现轮播)

horizontal:横向排列

pagingEnabled:按页滚动

export default class App extends Component {
  banners = [
    'http://www...1.png',
    'http://www...2.png',
    'http://www...3.png',
    'http://www...4.png',
  ];
  current = 0;
  componentDidMount() {
    //利用定时器,实现自动滚动,注意不要开启debug模式
    setInterval(() => {
      this.current++;
      if (this.current == this.banners.length) this.current = 0;
      this.f1.scrollToIndex({index: this.current});
    }, 2000);
  }
  render() {
    return (
      <View>
        <FlatList
          data={this.banners}
          keyExtractor={(item, index) => index}
          renderItem={this._renderItem}
          horizontal
          pagingEnabled
          onScroll={this._onScroll}
          ref={el => (this.f1 = el)}></FlatList>
      </View>
    );
  }
  _renderItem = ({item}) => (
    <Image source={{uri: item}} style={{width: rpx(750), height: rpx(400)}} />
  );
  _onScroll = e => {
    e.persist();
    //滚动过程中存在偏移量,需要修复
    const offset_x = e.nativeEvent.contentOffset.x;
    const w = e.nativeEvent.layoutMeasurement.width;
    //偏移量x/屏幕宽w,计算出当前页数,四舍五入
    this.current = Math.round(offset_x / w);
  };
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值