Skip to content

Commit

Permalink
[Navigator: Prevent user from over-popping the routes.
Browse files Browse the repository at this point in the history
Summary:
If user taps the back button quickly, the app crashes becuase "pop"
internally only checks `this.state.presentedIndex` which does not
always update when transtion happens.

This diff addresses this issue.
  • Loading branch information
Hedger Wang committed Jul 29, 2015
1 parent 8416691 commit 809a2dc
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion Libraries/CustomComponents/Navigator/Navigator.js
Original file line number Diff line number Diff line change
Expand Up @@ -922,7 +922,19 @@ var Navigator = React.createClass({
},

pop: function() {
this._popN(1);
if (this.state.transitionQueue.length) {
// This is the workaround to prevent user from firing multiple `pop()`
// calls that may pop the routes beyond the limit.
// Because `this.state.presentedIndex` does not update until the
// transition starts, we can't reliably use `this.state.presentedIndex`
// to know whether we can safely keep popping the routes or not at this
// moment.
return;
}

if (this.state.presentedIndex > 0) {
this._popN(1);
}
},

/**
Expand Down

0 comments on commit 809a2dc

Please sign in to comment.