当前位置: 首页 > 知识库问答 >
问题:

react路由器dom PrivateRoute与redux无止境加载

邹正阳
2023-03-14

重新加载后,私人路由重定向到授权开始之前的 /login,因为初始redux状态对它们两者都是假的。

这些是路由器的日志:

PrivateRoute.js:16加载:false isAuthenticated:false
PrivateRoute.js:16加载:true isAuthenticated:false
PrivateRoute.js:16加载:false isAuthenticated:true

它工作正常,我只需要一种方法来区分初始状态和非认证用户。

  1. 我的第一个想法是将isLoading的初始状态更改为true:
    奇怪的行为。页面根本不加载。甚至整个应用程序组件都无法安装,所以我真的不知道发生了什么。
isLoading ? 

isAuthenticated === null ?

(下面是路由器)

在需要私密路线之前,一切似乎都很好。当调试器位于if语句时,所有内容再次冻结。

这是我在这里找到的私人路线组件

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);

共有1个答案

乐健
2023-03-14

我花了大约5个小时才意识到我忘了在旋转器中导入一些东西。。。谢谢大家的努力

 类似资料:
  • 使用redux和反应路由器,我想访问路由指定的组件以外的组件上的路由参数。 我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数。 我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出re

  • 我有一个简单的(目前)应用程序,使用react router和redux,我想为它添加国际化功能。 我已经安装了npm包,并且能够安装和运行提供的示例。我已经将适当的导入添加到我自己的应用程序中,并将国际化标签添加到根渲染方法中。 当我将I18nextProvider标记添加到render方法时,我得到了错误 找不到模块“react” 这并不是特别有用,尤其是因为如果我删除标签,react应用程序

  • 在我的情况下,当使用从react-redux时,反应路由器不会将我的反应组件视为有效组件。并且有一个警告:失败proType:无效prop提供给 Main.js

  • react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击

  • 我正在使用react路由器v4和redux,如果用户未登录,我想使用私有和受保护的路由重定向。 我有一个路由组件: 它是这样实现的: 这是私人路线: 传递prop的最佳方式是什么,如果我连接Routes组件并从那里传递是否可以,或者应该从其他地方传递,或者连接需要它的每个组件并从那里读取?此外,这种方法如何处理嵌套路由,如?谢谢

  • 我正在尝试将react router从v3升级到v4,运行应用程序时出现以下错误: 减速器: 商店: 索引:从“React”导入React; 路线: 应用程序: 我不知道我错过了什么才能让它发挥作用 **注意:即使我只有一个路由并呈现静态组件(带文本的单个div),我仍然会看到此错误