【发布时间】:2015-08-19 11:53:20
【问题描述】:
我正在尝试通过上下文传递路由器,因此我可以在子 React.Component 上调用 navigateTo。
目的:
成功登录后,我需要离开登录。
策略:
1. 传递路由器到子登录组件。
2. 登录成功后在Router上调用navigateTo('/startpage') 传下来。
我在包含 Run 的页面/组件上有这个:
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.body);
});
以下上下文设置:
getChildContext() {
return {
router: Router
};
}
这对于 childContextTypes:
childContextTypes = {
router: React.PropTypes.object.isRequired
};
对于孩子本身:
contextTypes = {
router: React.PropTypes.object.isRequired
};
如果我使用"router: React.PropTypes.string.isRequired",上下文设置可以正常工作。注意字符串,但使用对象时我得到:
但是当我尝试使用对象时出现错误:
警告:上下文类型失败:提供给“NavItemLink”的“对象”类型的无效上下文“路由器”,应为“功能”。检查渲染方法
和:
未捕获的类型错误:this.context.router.isActive 不是函数
欢迎任何帮助?
【问题讨论】:
-
能贴出适用的路线吗?您是否考虑过在父组件上创建一个函数,例如
loginSuccessful()来处理路由器转换并通过 props 将其传递给子组件? -
嗨布拉德。是的,这正是我所做的 :-) 无论如何,谢谢。我会点击它作为有用的 - 我不知道这是否给出了任何点,但仍然。
标签: react-router