【发布时间】:2019-01-03 07:03:53
【问题描述】:
我是 react js 的新手。我已经阅读了很多使用 React 路由器的教程。 所以,我使用的方式是这样的
**index.js**
ReactDOM.render(<BrowserRouter>
<App />
</BrowserRouter>, document.getElementById('root'));
App.js
const store = configureStore()
class App extends React.Component {
render() {
return (
<Provider store={store}>
<div>
<Main />
</div>
</Provider>
)
}
Main.js
import React, { Component } from 'react';
import { Switch, Route } from 'react-router-dom';
import PrivateRoute from '../../privateRoute/component/PrivateRoute';
const LandingScreen = () => {
return (
<div>LandingScreen is theere</div>
)
}
const LoginComponent = () => {
return (
<div>LoginComponent</div>
)
}
export default class Main extends Component {
render() {
return (
<Router history={history}>
<Switch>
<PrivateRoute exact path="/" component={LandingScreen} />
<Route exact path="/login" component={LoginComponent} />
</Switch>
</Router>
)
}
}
在 privateRoute.js
const PrivateRoute = ({ component: Component, isFetching, hasUserLogIn, path, ...rest }) => {
return localStorage.getItem("access_token") ?
(
<Route
{...rest}
path={path}
component={Component}
/>
)
:
(
<Redirect
to={{
pathname: "/login",
state: { from: path }
}}
/>
)
};
这样我就在我的项目中添加了路线。 所以,我很困惑天气我是否以正确的方式使用它。 有人可以建议我或帮助我吗?
【问题讨论】:
-
您的应用程序中有两个路由器实例,对于应用程序范围的路由导航,您应该使用单个路由器实例
-
所以,我不应该使用路由器历史记录 - {history}
-
看看你上面的实现可能最好删除 BrowserRouter 实例
-
我这里使用的路由器是 import { Route, Redirect, Router, Switch, BrowserRouter, Provider } from 'react-router-dom';
-
是的,除了我们讨论的路由器更改之外,您的设置是正确的
标签: javascript reactjs redux react-redux react-router-v4