[英]react-router-dom PrivateRoute with redux endless loading
重新加載 PrivateRoute 在授權開始之前重定向到/login后,因為它們的初始redux狀態都是false 。
這些是來自路由器的日志:
PrivateRoute.js:16加載: false isAuthenticated : false
PrivateRoute.js:16加載: true isAuthenticated : false
PrivateRoute.js:16加載: false isAuthenticated : true
它工作正常,我只需要一種方法來區分初始狀態和未經過身份驗證的用戶。
isLoading ?
到
isAuthenticated === null ?
(下面的路由器)
在需要 PrivateRoute 之前,一切似乎都很好。 當調試器處於if語句時,一切都會再次凍結。
這是我在這里找到的 PrivateRoute 組件
import React from "react";
import { Route, Redirect } from "react-router-dom";
import { connect } from "react-redux";
import Spinner from "../../components/Spinner";
const PrivateRoute = ({
component: Component,
isLoading,
isAuthenticated,
...rest
}) => (
<Route
{...rest}
render={props =>
isLoading ? (
<Spinner />
) : isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{ pathname: "/login", state: { from: props.location } }}
/>
)
}
/>
);
const mapStateToProps = state => ({
isLoading: state.auth.isLoading,
isAuthenticated: state.auth.isAuthenticated
});
export default connect(mapStateToProps)(PrivateRoute);
我花了大約 5 個小時才意識到我忘記在Spinner 中導入一些東西......謝謝大家的努力
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.