react-router-dom - React 路由器历史推送进入初始路由
问题描述
我在 App.tsx 中有如下的路由配置
<BrowserRouter>
<Navbar />
<div>
<Switch>
<Route path="/" component={Home} exact />
<Route path="/layout" component={Layout} />
<Layout />
</Switch>
</div>
</BrowserRouter>
在布局组件路由如下
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div>
<Switch>
<Route path="/layout/dashboard" component={Dashboard} />
<Route path="/layout/authordocument/:id/edit" component={Editor} />
<Route path="/layout/authordocument/:id" component={DocumentView} />
<Route path="/layout/authordocument" component={AuthorDocument} />
<Route path="/layout/managetemplate/:id" component={TemplateView} />
<Route path="/layout/managetemplate" component={ManageTemplates} />
</Switch>
</div>
如果我尝试/layout/authordocument/:id/edit
通过在浏览器中粘贴 URL 来访问路径,它工作正常
但是,如果我已经在路径中/layout/authordocument/:id
,然后尝试通过代码导航Link
或导航history.push
到,/layout/authordocument/:id/edit
那么path="/"
由于某些原因,它就是组件Home
。
知道这里可能有什么问题吗?
我import { useHistory, Link, withRouter } from 'react-router-dom'
用来在组件之间导航。
解决方案
推荐阅读
- javascript - 获取选中复选框的值,重新添加已选中的项目
- ionic-framework - Ion Refresher 颜色图标不会改变 ionic 5 (stencil)
- azure-active-directory - 使用 Azure 工作帐户测试应用程序
- c++ - constexpr 函数中的 constexpr 常量?
- python - python scipy.interpolate.griddata 仅在 method='nearest' 中表现良好
- java - 在 Java 中组织多个线程执行器池中的总线程大小
- javascript - 将作为字符串发送的二进制数据转换为数组缓冲区
- embedded-linux - 无法使用 Yocto 为 ZCU104 构建映像
- javascript - 如何编辑css级联
- uber-api - react-map-gl-draw addFeatures 创建重复项