@@ -4,6 +4,12 @@ var React = require('react');
44var RouterMixin = require ( './RouterMixin' ) ;
55var RouteRenderingMixin = require ( './RouteRenderingMixin' ) ;
66var 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 ) ) ;
713
814/**
915 * Create a new router class
@@ -19,6 +25,13 @@ function createRouter(name, component) {
1925
2026 displayName : name ,
2127
28+ propTypes : {
29+ component : React . PropTypes . oneOfType ( [
30+ React . PropTypes . string ,
31+ React . PropTypes . element
32+ ] )
33+ } ,
34+
2235 getRoutes : function ( props ) {
2336 return props . children ;
2437 } ,
@@ -39,9 +52,7 @@ function createRouter(name, component) {
3952 // Pass all props except this component to the Router (containing div/body) and the children,
4053 // which are swapped out by the route handler.
4154 var props = assign ( { } , this . props ) ;
42- delete props . component ;
43- delete props . children ;
44- delete props . childProps ;
55+ props = omit ( props , PROP_KEYS ) ;
4556 return React . createElement ( this . props . component , props , handler ) ;
4657 }
4758 }
0 commit comments