反应路由器,怪异行为,路径加倍

时间:2018-10-29 22:07:15

标签: reactjs react-router-dom

我发现了react-router的怪异行为,它重复了地址行中添加的路径。 my sandbox

当URL正确更改后,单击课程时,单击任何其他(或相同)课程时,添加的路径都会加倍,因此,在第三次单击时,它会还原为正常路径。

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

first click: /courses/course/1

second: /courses/course/:id/course/1

third: /courses/course/1

问题出在哪里? 预先感谢

1 个答案:

答案 0 :(得分:1)

您可以通过将push()中的Courses.js更改为相对于根的路径以匹配您的Route定义来解决此问题。请注意开头的前向Flash /${path}的移除:

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

这是一个工作正常的Sandbox,其中包含解决此问题的几种不同方法。

另一种方法是使用LinkNavLink代替<article>的{​​{1}}和onClickpush()。您仍然可以像使用historytitle一样传递状态属性Link。这正是NavLinkLink的意图:

Navlink

这将使元素成为实际的{this.state.courses.map(course => <Link key={course.id} to={{ pathname: `/courses/course/${course.id}`, state: { title: course.title } }} > {course.title} </Link> ) 模式,也将为使用NavLink之类的东西打开大门,这种东西可以在必要时公开“活动的”样式类以进行样式设置。

您还可以考虑简化<a>Route以匹配更多标准约定:

Link

希望有帮助!