Fix Router#run() to be enabled to call with ReactElement created by React.createFactory()

ref. #4267
This commit is contained in:
Yuichi Murata 2015-05-10 19:04:35 +09:00
parent b3834d886a
commit ebfa2af6d9
2 changed files with 23 additions and 3 deletions

View File

@ -263,6 +263,7 @@ class CreateTest {
v: Router.Router;
constructor() {
// React.createElement() version
this.v = Router.create({
routes: React.createElement(Router.Route, null)
});
@ -271,6 +272,16 @@ class CreateTest {
location: Router.HistoryLocation,
scrollBehavior: Router.ImitateBrowserBehavior
});
// React.createFactory() version
this.v = Router.create({
routes: React.createFactory(Router.Route)()
});
this.v = Router.create({
routes: React.createFactory(Router.Route)(),
location: Router.HistoryLocation,
scrollBehavior: Router.ImitateBrowserBehavior
});
}
run() {
@ -281,12 +292,21 @@ class CreateTest {
class RunTest {
constructor() {
// React.createElement() version
var v1: Router.Router = Router.run(React.createElement(Router.Route, null), (Handler) => {
React.render(React.createElement(Handler, null), document.body);
});
var v2: Router.Router = Router.run(React.createElement(Router.Route, null), Router.HistoryLocation, (Handler, state) => {
React.render(React.createElement(Handler, null), document.body);
});
// React.createFactory() version
var v3: Router.Router = Router.run(React.createFactory(Router.Route)(), (Handler) => {
React.render(React.createElement(Handler, null), document.body);
});
var v4: Router.Router = Router.run(React.createFactory(Router.Route)(), Router.HistoryLocation, (Handler, state) => {
React.render(React.createElement(Handler, null), document.body);
});
}
}

View File

@ -179,7 +179,7 @@ declare module ReactRouter {
}
interface RouterCreateOption {
routes: Route;
routes: React.ReactElement<RouteProp>;
location?: LocationBase;
scrollBehavior?: ScrollBehaviorBase;
}
@ -187,8 +187,8 @@ declare module ReactRouter {
type RouterRunCallback = (Handler: Router, state: RouterState) => void;
function create(options: RouterCreateOption): Router;
function run(routes: Route, callback: RouterRunCallback): Router;
function run(routes: Route, location: LocationBase, callback: RouterRunCallback): Router;
function run(routes: React.ReactElement<RouteProp>, callback: RouterRunCallback): Router;
function run(routes: React.ReactElement<RouteProp>, location: LocationBase, callback: RouterRunCallback): Router;
//