[Navigator: Prevent user from over-popping the routes.
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.
This commit is contained in:
parent
8416691719
commit
809a2dc1d6
|
@ -922,7 +922,19 @@ var Navigator = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
pop: function() {
|
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);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue