diff --git a/Libraries/NavigationExperimental/NavigationTransitioner.js b/Libraries/NavigationExperimental/NavigationTransitioner.js index f13eeb72868..2a6aa90ebb1 100644 --- a/Libraries/NavigationExperimental/NavigationTransitioner.js +++ b/Libraries/NavigationExperimental/NavigationTransitioner.js @@ -60,6 +60,7 @@ class NavigationTransitioner extends React.Component { _onTransitionEnd: () => void; _prevTransitionProps: ?NavigationTransitionProps; _transitionProps: NavigationTransitionProps; + _isMounted: boolean; props: Props; state: State; @@ -94,6 +95,7 @@ class NavigationTransitioner extends React.Component { this._prevTransitionProps = null; this._transitionProps = buildTransitionProps(props, this.state); + this._isMounted = false; } componentWillMount(): void { @@ -101,6 +103,14 @@ class NavigationTransitioner extends React.Component { this._onTransitionEnd = this._onTransitionEnd.bind(this); } + componentDidMount(): void { + this._isMounted = true; + } + + componentWillUnmount(): void { + this._isMounted = false; + } + componentWillReceiveProps(nextProps: Props): void { const nextScenes = NavigationScenesReducer( this.state.scenes, @@ -211,6 +221,10 @@ class NavigationTransitioner extends React.Component { } _onTransitionEnd(): void { + if (!this._isMounted) { + return; + } + const prevTransitionProps = this._prevTransitionProps; this._prevTransitionProps = null;