@@ -4,6 +4,12 @@ var React = require('react');
4
4
var RouterMixin = require ( './RouterMixin' ) ;
5
5
var RouteRenderingMixin = require ( './RouteRenderingMixin' ) ;
6
6
var assign = Object . assign || require ( 'object-assign' ) ;
7
+ var omit = require ( 'object.omit' ) ;
8
+
9
+ // These are keys to omit - useful for preventing 15.2.0 warning regarding unknown props on DOM els
10
+ var PROP_KEYS = [ 'component' ]
11
+ . concat ( Object . keys ( RouterMixin . propTypes ) )
12
+ . concat ( Object . keys ( RouteRenderingMixin . propTypes ) ) ;
7
13
8
14
/**
9
15
* Create a new router class
@@ -19,6 +25,13 @@ function createRouter(name, component) {
19
25
20
26
displayName : name ,
21
27
28
+ propTypes : {
29
+ component : React . PropTypes . oneOfType ( [
30
+ React . PropTypes . string ,
31
+ React . PropTypes . element
32
+ ] )
33
+ } ,
34
+
22
35
getRoutes : function ( props ) {
23
36
return props . children ;
24
37
} ,
@@ -39,9 +52,7 @@ function createRouter(name, component) {
39
52
// Pass all props except this component to the Router (containing div/body) and the children,
40
53
// which are swapped out by the route handler.
41
54
var props = assign ( { } , this . props ) ;
42
- delete props . component ;
43
- delete props . children ;
44
- delete props . childProps ;
55
+ props = omit ( props , PROP_KEYS ) ;
45
56
return React . createElement ( this . props . component , props , handler ) ;
46
57
}
47
58
}
0 commit comments