Skip to content

fix: onChangeTab called twice on Android#1093

Merged
ptomasroos merged 1 commit intoptomasroos:masterfrom
bang9:patch-1
Jul 24, 2020
Merged

fix: onChangeTab called twice on Android#1093
ptomasroos merged 1 commit intoptomasroos:masterfrom
bang9:patch-1

Conversation

@bang9
Copy link
Copy Markdown
Contributor

@bang9 bang9 commented Apr 20, 2020

Summary

This will fix duplicated tab updates on android (resolve #1060)

onPageSelected={this._updateSelectedPage} ViewPager prop causes onChangeTab to be called twice when change tabs without any gesture actions

(I used onChangeTab with double click a tab for reset scroll-offset in tab-view or reset tab-index in nested tab-views)

[Before] When user clicked tab buttons

  1. goToPage
  2. updateSceneKeys and onChangeTab (index 0,1)
  3. Screen Update
  4. goToPage called onPageSelected={_updateSelectedPage}
  5. updateSceneKeys and onChangeTab (index 1,1)
  6. Screen Update

[After] When user clicked tab buttons

  1. goToPage
  2. updateSceneKeys and onChangeTab (index 0,1)
  3. Screen Update

[Before & After] When user swiped tab views

  1. Swipe
  2. onPageSelected={_updateSelectedPage}
  3. updateSceneKeys and onChangeTab (index 0,1)
  4. Screen Update

`onPageSelected={this._updateSelectedPage}` ViewPager prop causes onTabChange to be called twice when change tabs without any gesture actions
this will fix duplicated tab updates on android

#### when user clicked tab buttons
`goToPage -> updateSceneKeys(onTabChange) -> Screen Update -> onPageSelected={_updateSelectedPage} -> updateSceneKeys(onTabChange) -> Screen Update`

#### when user swiped tab views
`Swipe -> onPageSelected={_updateSelectedPage} -> updateSceneKeys(onTabChange) -> Screen Update`

#### when user clicked tab buttons with this patch
`goToPage -> set tabWillChangeWithoutGesture -> updateSceneKeys(onTabChange) -> Screen Update -> onPageSelected={_updateSelectedPage} -> ignore updateSceneKeys(onTabChange) -> remove tabWillChangeWithoutGesture`
@bang9 bang9 changed the title fix: onTabChange called twice on Android fix: onChangeTab called twice on Android Apr 20, 2020
@ptomasroos
Copy link
Copy Markdown
Owner

Thanks for working on this!

@bang9
Copy link
Copy Markdown
Contributor Author

bang9 commented Jul 24, 2020

@ptomasroos Could you merge it? Please let me know if you need anything else. :)

@ptomasroos ptomasroos merged commit 9e58a54 into ptomasroos:master Jul 24, 2020
@varemenos
Copy link
Copy Markdown

varemenos commented Aug 23, 2021

@ptomasroos can you release a new version that includes the commits of this PR and a couple of others already merged in master? thanks

TimMun pushed a commit to TimMun/react-native-scrollable-tab-view that referenced this pull request Sep 11, 2021
`onPageSelected={this._updateSelectedPage}` ViewPager prop causes onTabChange to be called twice when change tabs without any gesture actions
this will fix duplicated tab updates on android

#### when user clicked tab buttons
`goToPage -> updateSceneKeys(onTabChange) -> Screen Update -> onPageSelected={_updateSelectedPage} -> updateSceneKeys(onTabChange) -> Screen Update`

#### when user swiped tab views
`Swipe -> onPageSelected={_updateSelectedPage} -> updateSceneKeys(onTabChange) -> Screen Update`

#### when user clicked tab buttons with this patch
`goToPage -> set tabWillChangeWithoutGesture -> updateSceneKeys(onTabChange) -> Screen Update -> onPageSelected={_updateSelectedPage} -> ignore updateSceneKeys(onTabChange) -> remove tabWillChangeWithoutGesture`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

onChangeTab fires twice

3 participants