leecade/react-native-swiper

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

Open

#1,003 opened on 2019年6月30日

GitHub で見る
 (8 comments) (0 reactions) (0 assignees)JavaScript (10,334 stars) (2,346 forks)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.

コントリビューターガイド