Javascript 按路线反应
我正在使用React Router进行服务器端渲染,我想在某些路由上运行一个特殊操作,实际上是在DefaultRoute上。我应该如何创造条件呢?我尝试了以下代码:Javascript 按路线反应,javascript,reactjs,react-router,url-routing,react-router-component,Javascript,Reactjs,React Router,Url Routing,React Router Component,我正在使用React Router进行服务器端渲染,我想在某些路由上运行一个特殊操作,实际上是在DefaultRoute上。我应该如何创造条件呢?我尝试了以下代码: var React = require("react"); var Router = require("react-router"); var DefaultRoute = Router.DefaultRoute; var Link = Router.Link; var Route = Router.Route; var Rout
var React = require("react");
var Router = require("react-router");
var DefaultRoute = Router.DefaultRoute;
var Link = Router.Link;
var Route = Router.Route;
var RouteHandler = Router.RouteHandler;
var routes = [
React.createElement(Route, {name: "root", path: "/", handler: Root},
React.createElement(DefaultRoute, {handler: Default})
)
]
var Default = React.createClass({
displayName: "Default",
render: function () {
return React.createElement("h2", null, "Default");
}
});
var Root = React.createClass({
displayName: "App",
render: function () {
return (
React.createElement(RouteHandler, null)
);
}
});
app.get('*', function (req, res) {
Router.run(routes, req.path, function (Root, state) {
if (React.createElement(Root, null).constructor.displayName === 'Default'){
//run specific action
}
});
});
但我无法通过这种方式获得组件的名称。有没有其他方法可以识别我在默认路由上???我也在使用React路由器进行同构服务器端路由
Router.run的回调中的状态
属性包含活动路由。你可以这样做:
//states.routes返回路径匹配的嵌套路由。
//这将返回最后一条路线。
if(state.routes[state.routes.length-1].isDefault){
//这里的东西
//您还可以访问路由中的onEnter方法和处理程序(组件)。
}
那就更好了。非常粗俗的思维方式。最好有官方的API这是对的,但是这个问题比react router 1.0更老,所以没有官方的API。
if (state.routes.length === 0 || state.routes[state.routes.length - 1].isDefault) {
// stuff here
}