react-router-dom 仅更改 url
Posted
技术标签:
【中文标题】react-router-dom 仅更改 url【英文标题】:react-router-dom changes only url 【发布时间】:2018-12-22 01:30:42 【问题描述】:我创建了一个带有 router-dom 的网站,不幸的是 URL 发生了变化,我需要刷新页面才能看到正确的组件。
我已经看过 *** 上的所有线程,但没有一个对我有帮助。
所以,我将 App.js 作为主容器:
<div>
<Header />
<Router>
<Switch>
<Route exact path="/" component=Index />
<Route path="/offer" component=Offer />
</Switch>
</Router>
</div>
在标题中我有链接:
<Router>
<Link to="/">Start</Link>
<Link to="/offer">Offer</Link>
</Router>
对于 App.js,我导入了 Router、Switch 和 Route。对于 header.js,我导入路由器和链接。
一切都通过标准的 ReactDOM.render(, document.getElementById('root')); 显示出来
你能帮帮我吗?
【问题讨论】:
【参考方案1】:您应该只有一个Router
组件,最好是作为您应用的最顶层组件。
示例
function Header()
return (
<div>
<Link to="/">Start</Link>
<Link to="/offer">Offer</Link>
</div>
);
function App()
return (
<Router>
<div>
<Header />
<Switch>
<Route exact path="/" component=Index />
<Route path="/offer" component=Offer />
</Switch>
</div>
</Router>
);
【讨论】:
实际上,我希望标题位于另一个组件中。这是一个完整的导航结构。 @MaciekMesjasz 我不确定我是否理解。Header
在我的示例中是一个单独的组件,只是它与应用程序的其余部分共享相同的 Router
。
但是当它在路由器外部时,我收到一个链接未定义的错误
我终于想通了。非常感谢【参考方案2】:
这是因为Header不在Router内部:
试试这个:
<Router>
<Header />
<Switch>
<Route exact path="/" component=Index />
<Route path="/offer" component=Offer />
</Switch>
</Router>
在 Header 组件中:
<div>
<Link to="/">Start</Link>
<Link to="/offer">Offer</Link>
<div>
【讨论】:
它对我有用,显示 Index 和 Offer 组件的代码 索引和报价组件只是返回一些 html。我应该将什么导入到我的标头组件中? 按照@Tholle 的指示,应该可以解决您的问题以上是关于react-router-dom 仅更改 url的主要内容,如果未能解决你的问题,请参考以下文章
React:react-router-dom Redirect 不是重新加载页面,而是更改 URL
如何通过仅在react-router-dom中使用slug的路由访问不同的组件?
如何使用 react-router-dom 卸载路由更改上的组件而不是重新渲染 [重复]
React-router-dom更改URL但不更新样式组件的ThemeProvider的内容
(React Context 初学者)使用 react-router-dom 更改页面时,React Context 不启动