【发布时间】:2021-04-01 05:16:44
【问题描述】:
我正在建立一个具有以下链接结构的网站:
/blog/blog/post1/preview
/blog url 列出了所有博客帖子,/blog/post1 在编辑视图中显示帖子,同一编辑视图中的预览按钮链接到/preview url,显示编辑版本的预览。
我最初的想法是使用/blog/post1/preview url,但是使用<Switch> 变得复杂了。它不起作用,因为整个exact 问题我必须正确匹配三个以相同地址开头的网址。所以我切换到/preview。现在,我可以让第一个 url 工作,但 /preview 在屏幕上没有呈现任何内容。是因为我的<Link> 和<Route> 在我的应用程序中定义的位置。我有以下结构:
<Switch>
<Route path='/blog'>
<Blog/>
</Route>
<Switch>
in the main app.js
<Route exact path='/blog'>
//div with some helper views like search bar
</Route>
//it is inside map function that renders a card view of many posts, post1 for simplicity
<Route path='/blog/post1'>
<PostEditor/>
</Route>
in the main Post.js component
<Route path='/preview'>
//Content
</Route>
in the main PostEditor.js
PostEditor.js 在同一个文件中有Link 和Route 标签,但在其他文件中没有。这是它什么都不渲染的原因吗?当我将Route 标签从PostEditor 移动到App.js 时,一切正常。是嵌套问题还是类似的问题。我尝试在网上搜索,但对多层嵌套没有太多运气,通常是两层。任何帮助是极大的赞赏。
我正在使用 react-router 5.2.0 和 HashRouter,因为它与 github 配合得更好
更新:
我添加了一个示例沙箱来模拟我的场景。为什么在这种情况下/preview 链接不呈现任何内容?我想知道在这种情况下我做错了什么,因为我觉得关于 react-router 的某些知识存在差距,而我在不同级别创建链接和路由时缺少这些知识?此外,处理我目前正在做的事情的最佳选择是什么。
【问题讨论】:
-
在代码沙盒或任何其他在线代码编辑器中显示此类问题总是一个好主意。这样我们就可以更好地了解您是如何使用 Route 和 Switch 以及 Links 的。
-
我添加了示例代码链接。这可能更好地解释这种情况。为什么我在预览页面上看不到任何内容?
标签: javascript reactjs debugging react-router react-router-dom