【问题标题】:react-router link not receiving router in contextreact-router 链接未在上下文中接收路由器
【发布时间】:2015-06-19 21:27:09
【问题描述】:

我正在使用 React 和 react-router 创建一个单页 javascript 应用程序。每个页面都是它自己的组件。在一个页面上,我能够成功创建一个 Link 组件并且它按预期工作。在另一个页面上,我收到以下错误:

Warning: Failed Context Types: Required context `router` was not specified in `Link`.
Uncaught TypeError: Cannot read property 'makeHref' of undefined

这是我设置路线的文件:

http://pastebin.com/WBeN9BZw

这是链接起作用的组件(在 TeamRow 组件中):

http://pastebin.com/HjG2d43M

这是链接不起作用的组件(第 31 行):

http://pastebin.com/pWb7j8Mk

我记录了整个应用程序的上下文以检查它们,唯一不是空对象的情况是在 App 组件中。我在我的链接不起作用的 TeamPage 组件中做错了什么?为什么 HomePage 组件中的上下文为空,但 Link 有效?

【问题讨论】:

  • 我注意到您传递了team,但使用了this.props.teamName。能否在 TeamPage 组件中成功创建 Link?
  • 什么版本的 react-router?您应该在使用它的每个组件中指定 contextType: router。
  • 代码对我来说看起来不错。你不需要指定contextTypes,除非你明确使用this.context.router;上下文仍将传递给声明上下文类型的子项(例如Link)。你有一个小例子可以重现我们可以运行/实验的问题吗?
  • @pherris yes 在第二个文件的第 72 行,链接正常工作
  • @Colin 我使用的是 0.13.3 版本,我尝试在所有组件中指定 contextType 但没有效果

标签: javascript reactjs react-router


【解决方案1】:

尝试将您的要求更改为

// remove the react-router require
var {Link} = require('react-router');

// keep the react-router require    
var Link = ReactRouter.Link;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2016-07-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多