Skip to content

Commit d65fb46

Browse files
committed
Automatically add active params to <Link>s
Added a test stub, but still not sure about our strategy for testing actual components. Would love for someone with more experience in this area to help out. Fixes #89
1 parent 44b0e6a commit d65fb46

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

modules/components/Link.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var React = require('react');
22
var ActiveState = require('../mixins/ActiveState');
3+
var ActiveStore = require('../helpers/ActiveStore');
4+
var mergeProperties = require('../helpers/mergeProperties');
35
var withoutProperties = require('../helpers/withoutProperties');
46
var transitionTo = require('../helpers/transitionTo');
57
var makeHref = require('../helpers/makeHref');
@@ -66,7 +68,8 @@ var Link = React.createClass({
6668
* Returns a hash of URL parameters to use in this <Link>'s path.
6769
*/
6870
getParams: function () {
69-
return Link.getUnreservedProps(this.props);
71+
// Links may omit active params. See #89
72+
return mergeProperties(ActiveStore.getActiveParams(), Link.getUnreservedProps(this.props));
7073
},
7174

7275
/**

modules/stores/ActiveStore.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,27 @@ var ActiveStore = {
6868
notifyChange();
6969
},
7070

71+
/**
72+
* Returns an array of the currently active routes.
73+
*/
74+
getActiveRoutes: function () {
75+
return _activeRoutes;
76+
},
77+
78+
/**
79+
* Returns a hash of the currently active params.
80+
*/
81+
getActiveParams: function () {
82+
return _activeParams;
83+
},
84+
85+
/**
86+
* Returns a hash of the currently active query parameters.
87+
*/
88+
getActiveQuery: function () {
89+
return _activeQuery;
90+
},
91+
7192
/**
7293
* Returns true if the route with the given name, URL parameters, and query
7394
* are all currently active.

specs/Link.spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
require('./helper');
2+
var Link = require('../modules/components/Link');
3+
4+
describe('a Link that is present in an active route', function () {
5+
it('automatically gets the active params');
6+
});

0 commit comments

Comments
 (0)