Reactjs ID为的URL未由React路由器处理
我在我的Reactjs ID为的URL未由React路由器处理,reactjs,react-router,react-router-v4,react-router-dom,Reactjs,React Router,React Router V4,React Router Dom,我在我的ReactJs应用程序中使用React-Routerv4,看起来每当我有一个带有ID的路径时,React-Router都不会处理它,因为我看到页面正在刷新,并且在这个过程中我会丢失Redux存储中的所有数据 这是我的路线部分: <Switch> <Route exact path="/member" component={Home} /> <Route exact path="/member/accounts" component={Accoun
ReactJs
应用程序中使用React-Router
v4,看起来每当我有一个带有ID的路径时,React-Router
都不会处理它,因为我看到页面正在刷新,并且在这个过程中我会丢失Redux
存储中的所有数据
这是我的路线部分:
<Switch>
<Route exact path="/member" component={Home} />
<Route exact path="/member/accounts" component={Accounts} />
<Route path="/member/projects/profile/:id" component={ProjectProfile} />
</Switch>
下面是我如何生成链接的。这是当用户单击时的链接,我在浏览器上看到刷新
import { Link } from 'react-router-dom';
... omitted for brevity
const profileUrl = "/member/projects/profile/" + project.id;
<Link to={profileUrl}>Click here</Link>
从'react router dom'导入{Link};
... 为简洁起见省略
const profileUrl=“/member/projects/profile/”+project.id;
点击这里
“我的路线”中定义的其他链接工作正常,例如主页和帐户
我在这里做错了什么?是否将
onClick
事件处理程序传递给链接
组件
如果是这样,请确保处理程序一切正常。您可以尝试暂时删除它,以便调试刷新
学分:
经过大量测试,我找到了原因。无论何时链接到组件,我们都必须使用
NavLink
或Link
中的react router dom
我注意到我在应用程序中使用NavLink
时不一致。相反,我用的是普通的
一旦我切换到使用
NavLink
,它就可以正常工作。问题不在于路由器配置。页面不应刷新。这不是路由器的行为。当您试图更改路由时,是否提交了任何表单?不,这个特定的组件只是呈现一个项目列表,我所做的就是用这些代码生成它们的URL。这是在一个非常简单的表示组件中。您在控制台中是否收到任何错误?没有错误。控制台也会刷新,因为从技术上讲,我将获得一个新页面。我正在尝试在刷新之前捕获任何可能的错误,但没有看到任何错误。刷新后,没有错误。是否可以发布ProjectProfile
组件?完全没有事件处理程序。我发布的代码几乎是实际组件中的所有代码。这是一个非常简单的组件。有趣的是,我在其他地方也有类似的方法,我得到了同样的行为。因此,只要路径中有ID,页面就会刷新。