反应路由器传递数据

时间:2015-07-28 12:46:07

标签: reactjs react-router

我有一个简单的反应路由器:

<Route handler={AppRoot}>
    <Route name="about" handler={About} />
    <Route path="/projects" handler={Projects} />
    <Route path="/projects/experiments" handler={Projects} />
</Route> 

我正在为两条不同的路线使用相同的处理程序。在组件中,我希望相应地做不同的事情。我怎样才能做到这一点?我应该window.location检查当前网址吗?这听起来不对。请注意,我不想在这里使用参数

我的第二个问题是关于传递数据:

<Route path="/projects" handler={Projects} projects={projects} />

以上示例不起作用,如何将集合从路由器传递到组件?

1 个答案:

答案 0 :(得分:1)

您可以使用上下文访问Projects组件中的路由器,然后获取路由器的当前路径:

var Projects = React.createClass({
    contextTypes : {
        router : React.PropTypes.func
    },
    render : function () {
        var routerPath = this.context.router.getCurrentPath();
        ...
    }
});

至于传递集合,你不太清楚你想要实现什么样的场景,给我们一些细节。无论如何,我认为有一种比将集合传递给路由器更好的方法。