反应路由器传递数据

Posted

技术标签:

【中文标题】反应路由器传递数据【英文标题】:react router pass data 【发布时间】:2015-10-19 00:50:48 【问题描述】:

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

<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】:

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

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

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

【讨论】:

以上是关于反应路由器传递数据的主要内容,如果未能解决你的问题,请参考以下文章

反应路由器,以编程方式导航时传递数据?

在与反应无关的组件之间传递数据

使用时反应路由器传递道具[重复]

反应路由器将变量/状态传递给新路由?

反应路由器 - 无法传递存储

在 reactJS 中从反应路由器链接传递道具