【问题标题】:Reach Router Cannot read property 'apply' of null到达路由器无法读取 null 的属性“应用”
【发布时间】:2021-09-06 15:41:30
【问题描述】:

我的代码结构是这样的

App.js

<Router>
 <Dashboard path="/appName/dashboard" />
 <Workflow path="/appName">
  <Details path="item/details" />
  <Cases path="cases/open" />
  <Cases path="cases/closed" />
 </Workflow>
</Router>

在我的仪表板组件中,我有组件,如下所示:

<Link to={`/appName/item/details?id=${id}`} ><button>{id}</button></Link>

而我的 Workflow.js 是这样的:

Workflow = ({ children }) => {
 return (
  <div>
    <main>{children}</main>
    <aside><AsideMenu /></aside>
  </div>
 )
}

但是,当我单击从仪表板转到详细信息组件的链接时,我导航到它,然后收到错误 无法读取 null 的属性“应用”

我将链接切换到 /appName/cases/open?id=${id} 仍然遇到同样的错误。

当我直接加载这些页面时,我没有遇到问题。

任何帮助将不胜感激。

【问题讨论】:

  • 您从哪里收到id?你是从道具中得到的吗?
  • 是的,id是我从props得到的

标签: javascript reactjs routes reach-router


【解决方案1】:

我相信您以错误的方式使用路由器。一个有效的 React Router 表示可以如下所示:

路由器组件

<Router>
  <Switch>
     <Route path="/appName/dashboard"><Dashboard /></Route>
     <Route path="/appName">
       <Workflow />
     </Route>
  </Switch>
</Router>

工作流组件:

 <Switch>
   <Route path="/item/details"><Details /></Route>
   <Route path="/cases/open"><OpenCases /></Route>
   <Route path="/cases/closed><ClosedCases /></Route>
 </Switch>

【讨论】:

  • 您的代码 sn-p 关于 React-Router,我使用的是 Reach Router。这个问题最终成为 Reach 和 React 路由器库 github.com/ReactTraining/react-router/issues/7727 独有的问题当您尝试使用花哨的链接时,该库会感到困惑,并认为它必须进行后端调用,而不仅仅是在浏览器上路由。所以我将仪表板中的链接切换为锚标记。问题得到了解决。
猜你喜欢
  • 1970-01-01
  • 2020-10-09
  • 2022-01-23
  • 2017-09-23
  • 2021-03-16
  • 2020-05-22
  • 2017-02-21
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多