在受保护的路由reactjs中传递props

2023-11-22

我在我的reactjs应用程序中使用受保护的路由,我想知道如何在受保护的路由中传递道具,或者是否有更优雅的方法来解决我的问题。

我觉得需要在受保护的路由中传递 props 的原因是注销按钮位于受保护的组件内,我需要与包含用户尝试注销的所有路由的父组件进行通信。

这是相关代码:

父组件:

render() {
    const PrivateRoute = ({ component: Component, ...rest }) => (
        <Route {...rest} render={(props) => (
            isAuthenticated === true
            ? <Component {...props} /*I tried inserting handleLogout={this.handleLogout} here */ />
            : <Redirect to="/Login"/>
        )} />
    )

return (
<HashRouter basename={BASE_URL}>
    <div className="stories-module">
    <PrivateRoute
        exact
        path={'/login'}
        component={Login}
      />
    <PrivateRoute
        exact
        path={'/Main/'}
        component={Main}
    />
</HashRouter>
)};

不幸的是,我不知道还能如何解决这个问题。

在路由组件中传递 props 被认为是不好的做法吗?如果是这样,我还能如何处理这个问题,如果不是,我该如何正确传递道具?


声明你的PrivateRoute课外:

const PrivateRoute = ({ component: Component, handleLogout, isAuthenticated, ...rest }) => (
        <Route {...rest} render={(props) => (
            isAuthenticated === true
            ? <Component {...props} handleLogout={handleLogout} />
            : <Redirect to="/Login"/>
        )} />
);

然后通过handleLogout给你的PrivateRoute props :

render() {
    return (
        <HashRouter basename={BASE_URL}>
            <div className="stories-module">
                <Route
                     exact
                     path={'/login'}
                     component={Login}
                />
                <PrivateRoute
                     exact
                     path={'/Main/'}
                     component={Main}
                     handleLogout={this.handleLogout}
                     isAuthenticated={isAuthenticated}
                />
            </div>
        </HashRouter>
    )
};

你可能想声明你PrivateRoute如下所示,以便通过传播所有 props 将任何 props 传递给组件:

const PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => (
        <Route {...rest} render={(props) => (
            isAuthenticated === true
            ? <Component {...props} {...rest} />
            : <Redirect to="/Login"/>
        )} />
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在受保护的路由reactjs中传递props 的相关文章

随机推荐

  • 在 Mac 上安装 pycurl

    我对 python 非常陌生 需要帮助在我的机器上安装 pycurl 库 我现在正在运行 python 2 7 一个简短的教程将不胜感激 使用两种方法之一 方法一 须藤easy install pycurl 方法二 pip 安装 pycur
  • SSE2 有符号整数溢出未定义吗?

    有符号整数溢出在 C 和 C 中未定义 但是 有符号整数在单个字段内溢出又如何呢 m128i 换句话说 这种行为是在英特尔标准中定义的吗 include
  • Java - 将字符串转换为有效的 URI 对象

    我正在尝试获得一个java net URI对象从一个String 该字符串包含一些字符 需要用其百分比转义序列替换 但是当我使用 URLEncoder 用 UTF 8 编码对字符串进行编码时 甚至 也被替换为转义序列 如何从 String
  • Linq Dynamic ParseLambda 无法解析

    我正在尝试使用我在这里找到的示例代码来完成我正在处理的事情 如何将字符串转换为其等效的 LINQ 表达式树 在解决方案中 作者使用了以下内容 var e DynamicExpression ParseLambda new p null ex
  • MVC自定义roleprovider如何将其挂接到HttpContext.Current.User.IsInRole("myrole")

    我有一个 MVC 应用程序 我为其编写了一个自定义角色提供程序 如下所示 using System using System Collections Generic using System Linq using System Web us
  • 单击“下一步”按钮后,如何将 ListView 中的列表项显示限制为 10 和下 10 个

    我有一个包含 100 个项目的列表视图 我想显示前 10 个项目 单击 下一步 按钮时 我必须显示下一个 10 个项目 即从 11 到 20 我有获取前 10 个项目的代码 public int getCount return 10 但如何
  • 从文本中提取位置的方法?

    从自由文本中提取位置的推荐方法是什么 我能想到的是使用正则表达式规则 例如 单词 在位置 但还有比这更好的方法吗 我还可以考虑建立一个包含国家和城市名称的查找哈希表 然后将文本中提取的每个标记与哈希表的标记进行比较 有人知道更好的方法吗 编
  • 错误:require.paths 被删除。使用node_modules文件夹或NODE_PATH环境变量代替

    我刚刚新安装了 Node js 现在我尝试运行一个简单的脚本 但收到以下错误消息 Error require paths is removed Use node modules folders or the NODE PATH enviro
  • UI- 路由器 -- 在每次路由更改时运行函数 -- 状态名称位于哪里?

    使用 Angularjs 和 UI Router 尝试在每次状态更改时运行一个函数 rootScope on stateChangeStart function toState if toState login UsersService r
  • 如何取消操作表

    我使用此代码在 uiactionsheet 中显示 uipicker 但是当我单击关闭按钮时 我想从视图中删除操作表 那么删除 actionSheet 表单视图的代码应该是什么 BOOL textFieldShouldBeginEditin
  • JavaScript 初学者:在 JavaScript 中使用 JSON 和对象

    我有一些 JSON 返回到浏览器 就像这个 产品 Title School Bag Image images school bag jpg 我希望这些数据成为 产品 对象 这样我就可以使用原型方法 例如toHTMLImage 返回产品的 H
  • 金字塔和 .ini 配置

    每个 Pyramid 应用程序都有一个关联的 ini 文件 其中包含其设置 例如 默认值可能如下所示 app main use egg MyProject pyramid reload templates true pyramid debu
  • java中数组循环左移n个位置

    我正在尝试仅使用单个一维数组将数组循环左移 n 个位置 我可以在两个数组中完成它 但我还没有弄清楚如何使用一个数组来完成它 请提出您的建议 实际上有一个聪明的算法可以做到这一点 我们将使用A来表示数组 N表示数组大小 以及n表示要移动的位置
  • ERROR 1048 (23000) 列不能为 NULL,但我正在插入有效数据

    Stack Overflow 上有大量这样的帖子 但是从大约 20 个帖子来看 它们要么是在与 MySQL 接口时遇到编码错误 我不想这样做 要么只是想要空值 但其表定义不正确 我在 MySQL 5 6 19 中看到一个错误 其中有一列不允
  • 对指向 const 对象的非常量指针的非常量引用

    简而言之 我有一个简单的指针 int a 现在 我想改变这个指针的值 我想在一个函数中执行此操作 函数确保它不会更改指针指向的对象 但会更改指针本身 这就是为什么我希望这个函数采用这样的参数 非常量引用 因为指针的值将被更改 到指向常量对象
  • Linux 上的 PostgreSQL“initdb”(数据库初始化)

    我正在努力在 Linux 系统 CentOS RedHat Fedora 上工作的 PostgreSQL 9 x 中创建数据库集群 单个数据库 我已经安装了正确的 PostgreSQL 软件包 服务器和客户端 但是 我无法创建数据库并获取某
  • 如何将 SSH 身份文件密钥对添加到 JKS 密钥库

    我正在构建的 Java 应用程序的任务之一是连接到远程 SFTP 服务器 为了做到这一点 我拥有远程计算机的证书和本地身份 id rsa and id rsa pub in the ssh文件夹 这工作正常 我想将证书和身份放在受密码保护的
  • django-tastypie:通过关系发布到具有ManytoMany字段的资源

    我正在为一个项目开发 API 并且通过 OrderProducts 建立订单 产品关系 如下所示 在 models py 中 class Product models Model class Order models Model produ
  • Unity解决循环依赖

    在学习Unity的同时 DI框架中C 我遇到了一种情况 其中一个类有一个 setter 注入ClassB class ClassA IClassA Dependency public IClassB ClassB get return cl
  • 在受保护的路由reactjs中传递props

    我在我的reactjs应用程序中使用受保护的路由 我想知道如何在受保护的路由中传递道具 或者是否有更优雅的方法来解决我的问题 我觉得需要在受保护的路由中传递 props 的原因是注销按钮位于受保护的组件内 我需要与包含用户尝试注销的所有路由