You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中Link组件创建正常但无法跳转至新页面的原因排查

问题原因及解决办法

你的代码里有两个关键问题导致点击Link后页面看似没跳转:

1. Switch外部直接渲染了<ProjectsPage/>

不管当前路由是什么,这个组件都会被无条件渲染在页面上。当你点击Link跳转到/project/1时,Switch已经正确匹配并渲染了ProjectTasksPage,但因为ProjectsPage一直在页面中,可能会覆盖内容或者让你误以为跳转没生效。

解决:保留Switch里的<Route path="/projects" component={ProjectsPage}/>,删除Switch外面单独写的<ProjectsPage/>。

2. 路由匹配的优化建议(可选)

虽然不是直接导致跳转失效的原因,但建议给/projects和/tasks路由加上exact属性,避免后续添加子路由时出现意外匹配问题——比如未来如果有/projects/edit这类路由,不加exact会优先匹配到/projects的路由规则。

修改后的核心代码示例:

class App extends React.Component {
    render() {
        return (
            <div className='App'>
                <BrowserRouter>
                    <Header/>
                    <br/><br/><br/>

                    <Switch>
                        <Route path="/project/:id" exact component={ProjectTasksPage}/>
                        <Route path="/" exact/>
                        <Route path="/users" exact component={UsersPage}/>
                        <Route path="/projects" exact component={ProjectsPage}/>
                        <Route path="/tasks" exact component={TasksPage}/>
                    </Switch>
                    <Link to="/project/1">Link</Link>
                    <Footer/>
                </BrowserRouter>
            </div>
        );
    }
}

修改后可以验证:点击Link后查看浏览器地址栏是否变为/project/1,同时确认页面是否渲染了ProjectTasksPage的内容。如果地址栏变化但内容没显示,需要检查ProjectTasksPage组件本身的渲染逻辑是否正确。

内容的提问来源于stack exchange,提问作者Maxim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:22:33