reactjs - 反应路由器,奇怪的行为,双路径
问题描述
我发现 react-router 的一个奇怪行为,它复制了地址行中添加的路径。 我的沙盒
当我们在 url 正确更改后单击课程时,当我们单击任何其他(或相同)课程时,添加的路径会加倍,因此在第三次单击时它会反转回正常路径。
示例:地址行中的路径变为:
first click: /courses/course/1
second: /courses/course/:id/course/1
third: /courses/course/1
问题出在哪里?提前致谢
解决方案
您可以通过将您的 inside 更改为相对于根的路径以匹配您的定义来解决push()
此Courses.js
问题Route
。/
注意开头的正向闪光和删除${path}
:
this.props.history.push(`/courses/course/${course.id}`, {
title: course.title
});
这是一个工作分叉的沙箱,其中包括解决此问题的几种不同方法。
另一种方法是使用Link或NavLink而不是<article>
withonClick
和have push()
to history
。您仍然可以title
像当前使用Link
or一样传递 state 属性NavLink
。这正是它的用途Link
和Navlink
用途:
{this.state.courses.map(course =>
<Link
key={course.id}
to={{
pathname: `/courses/course/${course.id}`,
state: { title: course.title }
}}
>
{course.title}
</Link>
)
这将使元素成为实际<a>
的模式也将打开使用NavLink之类的东西的大门,它可以在必要时公开“活动”样式类进行样式设置。
您还可以考虑简化Route
andLink
以匹配更多标准约定:
<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>
希望这会有所帮助!
推荐阅读
- navigation - HERE 3D 场地导航
- python - Numpy:如何在张量上正确执行点积
- php - 如何验证用户密码并将用户数据回显为 json 字符串?
- ios - Swift iOS MapKit Polylines - 创建网格
- java-8 - 将集合分组到 hashmap 的多个谓词
- angular - primeNG p-fileUpload 自定义模式回调未触发
- android - 应用程序安装失败并显示消息:未能提交安装会话
- r - 如何对 1 个函数中的 2 个参数进行子集化
- git - 您可以在 2 个分支上执行 'git diff',但将其限制为仅一个目录子树吗?
- wordpress - 如何使用 wordpress 定制器复选框加载 fontawesome