Skip to content

Commit 745643b

Browse files
committed
Rename NonRenderable => Configuration
Also, make validateProps a static method.
1 parent e75dbc5 commit 745643b

File tree

7 files changed

+51
-41
lines changed

7 files changed

+51
-41
lines changed

modules/Configuration.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
var warning = require('react/lib/warning');
2+
var invariant = require('react/lib/invariant');
3+
4+
function checkPropTypes(componentName, propTypes, props) {
5+
for (var propName in propTypes) {
6+
if (propTypes.hasOwnProperty(propName)) {
7+
var error = propTypes[propName](props, propName, componentName);
8+
9+
if (error instanceof Error)
10+
warning(false, error.message);
11+
}
12+
}
13+
}
14+
15+
var Configuration = {
16+
17+
statics: {
18+
19+
validateProps: function (props) {
20+
checkPropTypes(this.displayName, this.propTypes, props);
21+
}
22+
23+
},
24+
25+
render: function () {
26+
invariant(
27+
false,
28+
'%s elements are for router configuration only and should not be rendered',
29+
this.constructor.displayName
30+
);
31+
}
32+
33+
};
34+
35+
module.exports = Configuration;

modules/NonRenderable.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

modules/components/DefaultRoute.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var React = require('react');
2-
var NonRenderable = require('../NonRenderable');
2+
var Configuration = require('../Configuration');
33
var PropTypes = require('../PropTypes');
44

55
/**
@@ -12,11 +12,12 @@ var DefaultRoute = React.createClass({
1212

1313
displayName: 'DefaultRoute',
1414

15-
mixins: [ NonRenderable ],
15+
mixins: [ Configuration ],
1616

1717
propTypes: {
1818
name: PropTypes.string,
1919
path: PropTypes.falsy,
20+
children: PropTypes.falsy,
2021
handler: PropTypes.func.isRequired
2122
}
2223

modules/components/NotFoundRoute.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var React = require('react');
2-
var NonRenderable = require('../NonRenderable');
2+
var Configuration = require('../Configuration');
33
var PropTypes = require('../PropTypes');
44

55
/**
@@ -13,11 +13,12 @@ var NotFoundRoute = React.createClass({
1313

1414
displayName: 'NotFoundRoute',
1515

16-
mixins: [ NonRenderable ],
16+
mixins: [ Configuration ],
1717

1818
propTypes: {
1919
name: PropTypes.string,
2020
path: PropTypes.falsy,
21+
children: PropTypes.falsy,
2122
handler: PropTypes.func.isRequired
2223
}
2324

modules/components/Redirect.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var React = require('react');
2-
var NonRenderable = require('../NonRenderable');
2+
var Configuration = require('../Configuration');
33
var PropTypes = require('../PropTypes');
44

55
/**
@@ -10,7 +10,7 @@ var Redirect = React.createClass({
1010

1111
displayName: 'Redirect',
1212

13-
mixins: [ NonRenderable ],
13+
mixins: [ Configuration ],
1414

1515
propTypes: {
1616
path: PropTypes.string,

modules/components/Route.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var React = require('react');
2-
var NonRenderable = require('../NonRenderable');
2+
var Configuration = require('../Configuration');
33
var PropTypes = require('../PropTypes');
44

55
/**
@@ -44,7 +44,7 @@ var Route = React.createClass({
4444

4545
displayName: 'Route',
4646

47-
mixins: [ NonRenderable ],
47+
mixins: [ Configuration ],
4848

4949
propTypes: {
5050
name: PropTypes.string,

modules/createRoutesFromReactChildren.js

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/* jshint -W084 */
22
var React = require('react');
3-
var warning = require('react/lib/warning');
43
var invariant = require('react/lib/invariant');
54
var DefaultRoute = require('./components/DefaultRoute');
65
var NotFoundRoute = require('./components/NotFoundRoute');
@@ -21,28 +20,17 @@ function createRedirectHandler(to, _params, _query) {
2120
});
2221
}
2322

24-
function checkPropTypes(componentName, propTypes, props) {
25-
for (var propName in propTypes) {
26-
if (propTypes.hasOwnProperty(propName)) {
27-
var error = propTypes[propName](props, propName, componentName);
28-
29-
if (error instanceof Error)
30-
warning(false, error.message);
31-
}
32-
}
33-
}
34-
3523
function createRoute(element, parentRoute, namedRoutes) {
3624
var type = element.type;
3725
var props = element.props;
3826

39-
if (type.propTypes)
40-
checkPropTypes(type.displayName, type.propTypes, props);
41-
42-
var route = { name: props.name };
27+
if (type.validateProps)
28+
type.validateProps(props);
4329

44-
if (props.ignoreScrollBehavior)
45-
route.ignoreScrollBehavior = true;
30+
var route = {
31+
name: props.name,
32+
ignoreScrollBehavior: !!props.ignoreScrollBehavior
33+
};
4634

4735
if (type === Redirect.type) {
4836
route.handler = createRedirectHandler(props.to, props.params, props.query);

0 commit comments

Comments
 (0)