当前位置: 首页 > 面试题库 >

您不应该在

滕祯
2023-03-14
问题内容

我正在尝试在示例应用程序中设置react-router,但出现以下错误:

You should not use <Link> outside a <Router>

我的html" target="_blank">应用程序设置如下:

父组件

const router = (
  <div className="sans-serif">
    <Router histpry={browserHistory}>
      <Route path="/" component={Main}>
        <IndexRoute component={PhotoGrid}></IndexRoute>
        <Route path="/view/:postId" component={Single}></Route>
      </Route>
    </Router>
  </div>
);

render(<Main />, document.getElementById('root'));

子/ Main组件

export default () => (
  <div>
    <h1>
      <Link to="/">Redux example</Link>
    </h1>
  </div>
)

知道我在做什么错吗?

这是一个沙盒链接来演示该问题。


问题答案:

我假设您使用的是React-Router V4,就像您在原始Sandbox
Link中
使用的一样。

您呈现Main在调用组件ReactDOM.render用来渲染Link和主要成分是外面Router,这就是为什么它被抛出的错误:

您不应在 外使用

变化

  1. 使用 这些路由器 ,BrowserRouter / HashRouter等中的任何一个,因为您使用的是React-Router V4。

  2. 路由器只能有一个孩子,因此将所有路由包装在div或交换机中。

  3. React-Router V4没有嵌套路由的概念,如果您想使用嵌套路由,请直接在该组件内部定义这些路由。

通过所有这些更改来检查 此工作示例

父组件:

const App = () => (
  <BrowserRouter>
    <div className="sans-serif">
      <Route path="/" component={Main} />
      <Route path="/view/:postId" component={Single} />
    </div>
  </BrowserRouter>
);

render(<App />, document.getElementById('root'));

Main 路线中的组成部分

import React from 'react';
import { Link } from 'react-router-dom';

export default () => (
  <div>
    <h1>
      <Link to="/">Redux example</Link>
    </h1>
  </div>
)

等等。



 类似资料:
  • 问题内容: 我想我将重新提出我的问题 您应该在哪里使用BlockingQueue实现而不是Simple Queue实现? 至 考虑到速度,并发性或其他属性(例如,访问最后一个元素的时间)等方面,BlockingQueue与Queue实现相比的优缺点是什么? 我已经使用了两种队列。我知道阻塞队列通常在并发应用程序中使用。我正在编写简单的ByteBuffer池,其中需要一些用于ByteBuffer对象

  • 问题内容: 您应该在服务器端进行验证,还是可以在客户端进行验证? @TheTXI 我很高兴您感到惊讶,我只是不想遗漏任何可能改变某人答案的虚假信息。 似乎很多人都在关注我要追求的目标,但是应该将Ajax的一部分保留在我的问题中,因为这是最重要的部分。 但是,我阅读这些帖子后知道,一个坏人可以轻松地加载萤火虫并将我的按钮更改为“提交”按钮并进行发布。或其他方式。 问题答案: 浏览器/客户端验证很方便

  • 本文向大家介绍如有您所在的游戏产品收到玩家不合理的游戏要求时,您应该如何应答?相关面试题,主要包含被问及如有您所在的游戏产品收到玩家不合理的游戏要求时,您应该如何应答?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 在Java <1.5中,常量将像这样实现 并且您可以像这样使用它: 现在,显然在1.5中,您应该使用枚举: 现在您可以像这样使用它: 我觉得有点难看。现在,我可以轻松添加几个静态变量: 现在,我可以再次执行此操作: 具有枚举的所有类型安全性。 这是好风格还是坏风格?您能想到更好的解决方案吗? 更新资料 Vilx-是第一个强调我所缺少的东西的人-枚举应该是一等公民。在Java中,这意味着

  • 问题内容: 我正在阅读这篇小文章,以了解从继承的内容,但是我有些困惑。 他这样做: https://gist.github.com/chevex/7646362 为什么他用自己的构造函数手动调用EventEmitter构造函数?另外,他为什么将自己的constrructor的原型设置为的原型?这真让我感到困惑。 然后评论中的某人建议他改为这样做,这似乎更优雅: https://gist.githu

  • 问题内容: C#和Java几乎允许在类名,方法名,局部变量等中使用任何字符。使用非ASCII字符,测试不良的编辑器和分析工具的边界以及某些人难以阅读,还是美国的嚣张气概是唯一的反对? 问题答案: 我会坚持使用英语,这仅仅是因为您通常不知道谁在使用该代码,并且因为在构建/测试/错误跟踪进度中使用的某些第三方工具可能会出现问题。在非德语键盘上输入äöüß只是PITA,我只是相信从事软件开发的任何人都应