diff --git a/modules/components/Routes.js b/modules/components/Routes.js index 2d92d3d358..ea73f4931d 100644 --- a/modules/components/Routes.js +++ b/modules/components/Routes.js @@ -279,7 +279,7 @@ var Routes = React.createClass({ return; // Nothing to do! if (this.state.path) - this.recordScroll(this.state.path); + this.recordScroll(this.state.path, actionType); this.dispatch(path, function (error, abortReason, nextState) { if (error) { diff --git a/modules/mixins/ScrollContext.js b/modules/mixins/ScrollContext.js index 3977081041..6ace39bfd1 100644 --- a/modules/mixins/ScrollContext.js +++ b/modules/mixins/ScrollContext.js @@ -3,6 +3,7 @@ var invariant = require('react/lib/invariant'); var canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; var ImitateBrowserBehavior = require('../behaviors/ImitateBrowserBehavior'); var ScrollToTopBehavior = require('../behaviors/ScrollToTopBehavior'); +var LocationActions = require('../actions/LocationActions'); function getWindowScrollPosition() { invariant( @@ -53,9 +54,11 @@ var ScrollContext = { ); }, - recordScroll: function (path) { - var positions = this.getScrollPositions(); - positions[path] = getWindowScrollPosition(); + recordScroll: function (path, actionType) { + if (actionType !== LocationActions.REPLACE) { + var positions = this.getScrollPositions(); + positions[path] = getWindowScrollPosition(); + } }, updateScroll: function (path, actionType) {