imT*_*van 10 reactjs react-router
我正在尝试为我的应用程序实现基本路由,但遇到了 BrowserRouter 和 Router 之间的区别。在我的情况下,路由器工作正常,BrowserRouter 没有正确路由。
我正在使用历史对象。当用户点击一个按钮时,它需要被带到登录页面
history.push('/login')
const Routing = () =>
<Router history={history}>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/login" component={Login} />
</Switch>
</Router>
Run Code Online (Sandbox Code Playgroud)
以上一项工作,但如果我使用 BrowserRouter 而不是路由器,它无法正常工作。
Jac*_*hen 14
简而言之,它们彼此相等:
import { BrowserRouter } from 'react-router-dom'
<BrowserRouter>
<App />
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
和
import { Router } from 'react-router-dom'
import { createBrowserHistory } from 'history'
const history = createBrowserHistory()
<Router history={history}>
<App />
</Router>
Run Code Online (Sandbox Code Playgroud)
<BrowserRouter>
是<Router>
一个使用HTML5 history API
(pushState的,replaceState和popstate事件),让您UI
在sync
使用的URL。
所以你的路线应该是这样的,
const Routing = () => <BrowserRouter> <Switch> <Route exact path="/" component={Home} /> <Route path="/login" component={Login} /> </Switch> </BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
对于单击按钮的导航,您可以Redirect
从react-router-dom
包中使用。
import { Redirect } from 'react-router-dom'
Run Code Online (Sandbox Code Playgroud)
点击按钮,
<Redirect to="/login" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9874 次 |
最近记录: |