代码之家  ›  专栏  ›  技术社区  ›  Alexey Nikonov

反应路由器,怪异的行为,双重路径

  •  0
  • Alexey Nikonov  · 技术社区  · 7 年前

    我发现react路由器有一个奇怪的行为,它复制了地址行中添加的路径。 my sandbox

    示例:地址行中的路径变为:

    first click: /courses/course/1
    
    second: /courses/course/:id/course/1
    
    third: /courses/course/1
    

    问题从何而来? 提前谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alexander Staroselsky    7 年前

    您可以通过更改 push() 在内部 Courses.js Route 定义。注意前闪 / 开始和移除 ${path} :

    this.props.history.push(`/courses/course/${course.id}`, {
      title: course.title
    });
    

    Sandbox

    另一种方法是 Link NavLink 而不是 <article> 具有 onClick 不得不这么做 推送() history title Link NavLink . 这到底是什么 链接 Navlink

    {this.state.courses.map(course =>
      <Link
        key={course.id}
        to={{
          pathname: `/courses/course/${course.id}`,
          state: { title: course.title }
        }}
      >
        {course.title}
      </Link>
    )
    

    <a> 导航链接

    您也可以考虑简化 链接

    <Route path="/courses/:id" exact component={Courses} />
    
    // ...
    
    <Link
      className="Course"
      key={course.id}
      to={{
        pathname: `/courses/${course.id}`,
        state: { title: course.title }
      }}
    >
        {course.title}
    </Link>
    

    希望这有帮助!