[英]"react-router-dom " router component does not work
I want to use history explicitly.我想明确使用历史记录。 So I know about BrowserRoute but I want to use Route and use history as its property.
所以我知道 BrowserRoute 但我想使用 Route 并将历史记录用作其属性。 when I run the program I get this page.
当我运行程序时,我得到了这个页面。 enter image description here
在此处输入图像描述
This is my AppRouter.js这是我的 AppRouter.js
import React from "react"; import { Router, Route, Switch } from "react-router-dom"; import { createBrowserHistory } from "history"; import LoginPage from "../components/LoginPage"; import ExpenseDashboardPage from "../components/ExpenseDashboardPage"; import AddExpensePage from "../components/AddExpensePage"; import EditExpensePage from "../components/EditExpensePage"; import NotFoundPage from "../components/NotFoundPage"; import PublicRoute from "./PublicRoute"; import PrivateRoute from "./PrivateRoute"; export const history = createBrowserHistory(); const AppRouter = () => ( <Router history={history}> <div> <Switch> <PublicRoute path="/" component={LoginPage} exact={true} /> <PrivateRoute path="/dashboard" component={ExpenseDashboardPage} /> <PrivateRoute path="/create" component={AddExpensePage} /> <PrivateRoute path="/edit/:id" component={EditExpensePage} /> <Route component={NotFoundPage} /> </Switch> </div> </Router> ); export default AppRouter;
LoginPage.js登录页面.js
import React from "react"; import { connect } from "react-redux"; import { startLogin } from "../actions/auth"; export const LoginPage = ({ startLogin }) => ( <div> <button onClick={startLogin}>Login with Google</button> <button>Amir Hossein Jobeiri</button> </div> ); const mapDispatchToProps = (dispatch) => ({ startLogin: () => dispatch(startLogin()), }); export default connect(undefined, mapDispatchToProps)(LoginPage);
PublicRoute.js公共路由.js
import React from "react"; import { connect } from "react-redux"; import { Route, Redirect } from "react-router-dom"; export const PublicRoute = ({ isAuthenticated, component: Component, ...rest }) => ( <Route {...rest} component={(props) => isAuthenticated? <Redirect to="/dashboard" />: <Component {...props} /> } /> ); const mapStateToProps = (state) => ({ isAuthenticated: ..state,auth;uid; }); export default connect(mapStateToProps)(PublicRoute);
PrivateRoute私有路由
import React from "react"; import { connect } from "react-redux"; import { Route, Redirect } from "react-router-dom"; import Header from "../components/Header"; export const PrivateRoute = ({ isAuthenticated, component: Component, ...rest }) => ( <Route {...rest} component={(props) => isAuthenticated? ( <div> <Header /> <Component {...props} /> </div> ): ( <Redirect to="/" /> ) } /> ); const mapStateToProps = (state) => ({ isAuthenticated: ..state,auth;uid; }); export default connect(mapStateToProps)(PrivateRoute);
I searched a lot about this problem but I do not get the right answer.我对这个问题进行了很多搜索,但没有得到正确的答案。 Please help if you can.
如果可以的话请帮忙。
I changed my "history" version to "4.7.2".我将“历史”版本更改为“4.7.2”。 It works properly.
它工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.