React router 通过上下文将路由器传递给子组件

React router 通过上下文将路由器传递给子组件,react-router,React Router,我试图通过上下文传递路由器,这样我就可以在子React.Component上调用navigateTo 目的: 成功登录后,我需要离开登录。 策略: 1.将路由器向下传递到childe登录组件。 2.成功登录时,调用路由器上的navigateTo('/startpage')传递 我在包含运行的页面/组件上有以下内容: Router.run(routes, function (Handler) { React.render(<Handler/>, document.body);

我试图通过上下文传递路由器,这样我就可以在子React.Component上调用navigateTo

目的:
成功登录后,我需要离开登录。
策略:
1.将路由器向下传递到childe登录组件。
2.成功登录时,调用路由器上的navigateTo('/startpage')传递

我在包含运行的页面/组件上有以下内容:

Router.run(routes, function (Handler) {
    React.render(<Handler/>, document.body);
});
对于childContextTypes:

childContextTypes = {
    router: React.PropTypes.object.isRequired
};
对于孩子本身:

contextTypes = {
    router: React.PropTypes.object.isRequired
};
如果我使用的是
“router:React.PropTypes.string.isRequired”
,则上下文设置工作正常。注意字符串,但在使用object I get时:

但当我尝试使用object时,会出现错误:

警告:失败的上下文类型:为“NavItemLink”提供的“object”类型的上下文“router”无效,应为“function”。检查的渲染方法

以及:

未捕获类型错误:this.context.router.isActive不是函数


欢迎任何帮助?

我的解决方案是在父级上创建一个函数,并将其与上下文一起传递

家长:

contextTypes = {
        router: React.PropTypes.func.isRequired
    };
和子组件:

childContextTypes = {
        router: React.PropTypes.func.isRequired
    };

如果您只是传递
路由器
,请查看使用路由器将组件包装在更高阶组件中

react router
存储库中的许多示例都使用了此选项,下面是一个示例:


您可以发布适用的路线吗?您是否考虑过在父组件上创建一个函数,如
loginsucessful()
,用于处理路由器转换,并通过props将其传递给子组件?您好。是的,那正是我所做的:-)无论如何,谢谢。我会点击这个作为有用的-我不知道如果给任何点,但仍然。
childContextTypes = {
        router: React.PropTypes.func.isRequired
    };