leecade/react-native-swiper

Loop={true} + initialIndex leads to brief off by one error flicker

Open

#1,003 创建于 2019年6月30日

在 GitHub 查看
 (8 评论) (0 反应) (0 负责人)JavaScript (10,334 star) (2,346 fork)batch import
component: ViewPagerhelp wanted🐛bug🔎investigate

描述

Which OS ?

iOS

Version

1.6

  • react-native-swiper v1.6
  • react-native v0.59.8

Expected behaviour

I was debugging an issue where setting the index param briefly showed the wrong data (off by one earlier) for a brief second before a redraw happened.

In debugging, this seems to be related to the loop={true} behavior (the default), since eliminating looping causes the offset to be calculated correctly and no flicker.

I'm guessing the implementation has some kind of 'extra' item at the front to handle the left-swipe when looping, and the initialOffset is not accounting for this?

Actual behaviour

Setting index causes it to start drawing on the correct position without a flicker.

Steps to reproduce

  1. Create a Swiper with multiple items, and loop={true}
  2. Set the initial index.
  3. Observe that it is briefly off by one before correcting itself.

贡献者指南