React router Link 标签的 target="_blank" 上的不同路由渲染

2024-04-01

即使链接将“to”属性设置为正确的路线,但单击时也不会加载。 React-router 中的另一条路由被加载到它的位置。

这是代码:


App.js

  const [isLoggedIn, setIsLoggedIn] = React.useState(false);

  // useEffect to stop infinite looping problem with state
  React.useEffect(() => {
    const loggedInInfo = localStorage.getItem("isLoggedIn");

    if (loggedInInfo === "1") {
      setIsLoggedIn(true);
    }
  }, []);

内部返回()

<Switch>
    <Route path="/" exact>
      <Redirect to="/login" />
    </Route>
    <Route path="/login">
      {!isLoggedIn && <Login onFormSubmit={handleFormSubmit} />}
    </Route>
    <Route path="/home-page">
      {isLoggedIn && <HomePage onLogout={handleLogout} />}
      {!isLoggedIn && <Redirect to="/login" />}
    </Route>
    <Route path="/approved-factory-assy-test">
      {isLoggedIn && <ApprovedFactoryAssyTest onLogout={handleLogout} />}
      {!isLoggedIn && <Redirect to="/login" />}
    </Route>
    <Route path="*">
      <h1>Page not found!</h1>
    </Route>
  </Switch>

导航栏.js

<div className="sub-menu">
                <ul>
                    <li><Link className="link" to='/approved-factory-assy-test' target="_blank" rel="noreferrer noopener">Approved Factory Assy Test</Link></li>

Issue

我怀疑当应用程序在新窗口和浏览器上下文中打开时,初始isLoggedIn初始渲染的状态为 false 会立即弹出用户off the "/approved-factory-assy-test"路线。问题在于初始状态与未经身份验证的状态相匹配,即false.

const [isLoggedIn, setIsLoggedIn] = React.useState(false); // <-- initially false

...

<Route path="/approved-factory-assy-test">
  {isLoggedIn && <ApprovedFactoryAssyTest onLogout={handleLogout} />}
  {!isLoggedIn && <Redirect to="/login" />} // <-- bounce user to login
</Route>

Solution

尝试使用更准确的初始状态。初始化isLoggedIn state fromlocalStorage,并使用useEffect挂钩以保存本地状态更改to本地存储。

Example:

const [isLoggedIn, setIsLoggedIn] = React.useState(() => {
  return JSON.parse(localStorage.getItem("isLoggedIn")) ?? false;
});

React.useEffect(() => {
  localStorage.setItem("isLoggedIn", JSON.stringify(isLoggedIn));
}, [isLoggedIn]);

现在根据初始渲染在初始渲染上渲染正确的组件isLoggedIn状态值。

<Route path="/approved-factory-assy-test">
  {isLoggedIn
    ? <ApprovedFactoryAssyTest onLogout={handleLogout} />
    : <Redirect to="/login" />
  }
</Route>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React router Link 标签的 target="_blank" 上的不同路由渲染 的相关文章

  • 从 HTML 表单发送数据到 Node.js 服务器

    我正在学习 Node js 我的服务器中有这个 var http require http var url require url http createServer function request response response w
  • 如何使用nodeJS SFTP客户端列出所有子目录?

    有趣的节点 JS ssh2 sftp client 我想列出给定路径中的所有目录及其子目录 let sftp new ssh2SftpClient console log sftp sftp connect host xx xxx xxx
  • angularjs 自定义过滤器检查数据数组内的值

    我有两个过滤器 它们根据数据中的队列键过滤数据 这是我的代码 var app angular module app app controller mainController function scope Data object scope
  • 全局 JavaScript 变量作用域:为什么这不起作用?

    所以我在玩 JavaScript 时遇到了我认为奇怪的事情 有谁能解释一下以下内容吗 我已将警报值作为评论包含在内 为什么 foo 中的第一个警报 msg 返回不明确的并不是outside var msg outside function
  • Object.assign() - 奇怪的行为需要解释

    我有这个代码 function margeOptions options passedOptions options Object assign options passedOptions let passedOpts a true let
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • 画布图像遮罩/重叠

    在我的项目中 我必须使用画布在另一个相同尺寸和图案图像上实现一个不同的颜色图像 并且图像不是圆形或矩形形状 所有这些都是波浪形状的 它将应用于单个主背景图像 以便在每个主背景图像上显示多个图形onclick功能 重叠的图像应更改为另一种选定
  • 将字符串转换为变量名。 (JavaScript)

    我确实查看了前面的问题 但它们是针对整数值的 我需要文本值的答案 我在本周早些时候问了一个与此相关的问题 但现在是这样 如下所示 我使 Make x 等于某个字符串值 Acura Honda Toyota 当我将 Make x 传递到函数
  • TypeScript 中类和命名空间的区别

    到底有什么区别classes and namespaces在打字稿中 我知道 如果您创建一个带有静态方法的类 您可以在不实例化该类的情况下访问它们 这正是我猜想的命名空间的要点之一 我还知道你可以创建多个同名的命名空间 并且它们的方法在编译
  • 向下滚动时如何使图像移动?

    这是我想要实现的目标的示例 https www flambette com en https www flambette com en 我尝试过更改图像的 css 属性 但效果不能满足我的需求 我尝试过以下代码 mydocument on
  • 为什么新行上的 return 语句不返回任何值? [复制]

    这个问题在这里已经有答案了 考虑以下情况 function func1 return hello world function func2 return hello world console log func1 console log f
  • 赋予 d3 序数轴标签与尺度名称不同

    我有一个序数scale具有不同值的某些标签 我想显示该比例的轴 其中轴标签与比例标签不同 我有这个代码 var width 1000 var height 600 var margins left 100 40 right 25 botto
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • Google Maps JS Api - b.get 不是函数错误(isLocationOnEdge)

    我想检查我的路线上是否有标记 所以我尝试使用 isLocationOnEdge 但收到 TypeError b get 不是函数 错误 这是我的代码 我尝试了几次更改但无法解决问题 var directionsDisplay new goo
  • 自动调整元素 (div) 大小以适合水平内容

    我尝试谷歌搜索 但没有得到太多结果 我正在构建一个水平轮播 它在浮动的 LI 中显示图像 我想解决的问题是 每次我向轮播添加缩略图 我是延迟加载 时 我都需要重新计算轮播的宽度 以便所有浮动缩略图很好地并排排列 其一 我宁愿不必在 JS 中
  • html输入数字,min + step,使step忽略min?

    是否有可能使step忽略min属性
  • router.navigate 使用查询参数 Angular 5

    我在使用查询参数路由到路由时遇到问题我有一个像这样的函数 goToLink link this router navigate link split 0 queryParams this sortParams link 和这个功能 sort
  • 为什么对于整数键,“Map”操作比 JavaScript (v8) 中的“Object”慢得多?

    我很高兴使用Map对于在我的 JavaScript 代码库中随处访问的索引 但我刚刚偶然发现了这个基准 https stackoverflow com a 54385459 365104 https stackoverflow com a
  • ES6解构对象赋值函数参数默认值

    您好 我正在查看在传递函数参数时使用对象解构的示例对象解构演示 https developer mozilla org en US docs Web JavaScript Reference Operators Destructuring

随机推荐

  • protobufs 格式的原始解码器

    我想找到一种方法将二进制 protobuf 消息转换为所包含数据的人类可读描述 而不使用 proto 文件 背景是我有一条 proto 消息 它被 Android 上的解析器拒绝 但还不完全清楚原因 我可以手动浏览该消息 但这相当乏味 I
  • React JS npm run start 返回错误 SyntaxError: Unexpected token;

    我试图启动反应网络服务器npm start但不小心它又回来了 home azureuser react inventory node modules eslint webpack plugin node modules jest worke
  • Spark Dataframes 已成功创建,但无法写入本地磁盘

    我正在使用 IntelliJ IDE 在 Microsoft Windows 平台上执行 Spark Scala 代码 我有四个 Spark Dataframe 每个 Dataframe 大约有 30000 条记录 我尝试从每个 Dataf
  • 如何使用 jQuery POST 将变量从 JavaScript 传递到 PHP

    我正在传递变量sessionnum来自页面 chat php 中的以下 Javascript 函数 document ready function timestamp 0 updateMsg form chatform submit fun
  • 如何才能更准确地计算 PI?

    我应该使用 1 到 30 之间的数字通过下面的公式来计算 pi Picture https i stack imgur com fYtUE png 这是我到目前为止所做的 int k outside 0 double inside 0 co
  • IDE 可以使用 Maven 解析 Java 中的 Scala 类吗?

    我有一个混合 Java 和 Scala 源的项目 按照以下说明进行操作这一页 http scala tools org mvnsites maven scala plugin usage html 它在从命令行运行 Maven 时有效 然而
  • Firestore:用其内容填充 ids 数组的最佳方法是什么?

    我有包含用户 ID 的对象数组 const userIDs key user 1 key user 2 key user 3 我想用 cloud firestore 中的用户数据填充它 const userIDs key user 1 na
  • 在 SQL Server 2005 中授予对 2 个表的只读访问权限的最佳方法?

    向少数用户授予对 SQL Server 2005 数据库中几个表的访问权限的最佳方法是什么 我知道文献推动了视图的使用 但是授予对实际表的只读访问权限有什么好处 至少对于表来说 开销会更少 因为索引和其他限制已经就位并在表中进行管理 单点维
  • 如何使用 jQuery 附加 HTML

    我正在使用构建一个 HTML 元素 this html my html here 我需要使用不同的 CSS 在这里添加许多元素 所以我想要的是我应该能够在此处附加另一个 HTML this html my html here this ht
  • ObjC: +[NSObject isSubclassOfClass:] 给出不正确的失败

    我有一个 iOS 静态库 它定义了NSOperation客户端应该子类化以添加自己的逻辑的基类 interface BaseClass NSOperation 客户向管理器注册他们的子类 OperationManagerClass regi
  • 按组排列的 NA 计数[重复]

    这个问题在这里已经有答案了 我知道 R 中的以下语法将按变量给出 NA 的计数 如何通过分组变量对此进行分层 na count lt sapply x function y sum length which is na y 我们可以用agg
  • 如何验证 Azure 虚拟机 RDP 证书?

    我的虚拟机的 RDP 证书指纹由于某种原因发生了更改 有没有办法在 Azure 中验证新的证书指纹 类型 虚拟机 经典 计算机 Basic A3 操作系统 Windows Server Azure 中有可用的启动诊断日志 在启动虚拟机时默认
  • Iexpress - 提取路径

    我要创建一个自解压存档 但在连接默认解压路径时遇到问题 我想在与自解压存档程序相同的路径中解压我的文件 不幸的是 这些文件正在另一个路径中提取 C Users computer AppData Temp IXP000 TMP 可以设置路径吗
  • 应用程序无法打开,因为它来自身份不明的开发者

    我昨天安装了 Mac OS X Mavericks 10 9 从那时起我无法启动 Eclipse 我附上我看到的消息的屏幕截图 有解决方法吗 我找到了一个解决方案修复 Mac OS X 中的 应用程序无法打开 因为它来自身份不明的开发者 错
  • 如何使用 GitPython 拉取远程存储库?

    我正在尝试找到使用 gitPython 提取 git 存储库的方法 到目前为止 这是我从官方文档中获取的内容here http gitpython readthedocs org en latest tutorial html handli
  • Android File.exists() 不区分大小写吗?

    我创建了一个新文件夹 sdcard dd by File album new File albumPath if album exists Log d TAG albumPath already exists else boolean bF
  • OS X 上带有 fat 库的架构 x86_64 的未定义符号

    我已经建立了libcrypto a and libssl a我自己从来源处指定darwin64 x86 64 cc 对于 64 位 和darwin i386 cc 对于 32 位 至OpenSSL的配置脚本 创建了脂肪库lipo并将它们添加
  • 难道静态成员不会使类本身成为(全局)对象吗?

    每当我遇到单例模式或任何静态类 即 几乎 仅具有静态成员的类 的实现时 我想知道这是否实际上是一种黑客行为 因此严重滥用了类和实例的原则只是为了设计单个对象而不是设计类并创建单个实例 对我来说 看起来类的静态成员通常会尝试向类添加某种它们实
  • 套接字附加程序 - 基本示例一步一步[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • React router Link 标签的 target="_blank" 上的不同路由渲染

    即使链接将 to 属性设置为正确的路线 但单击时也不会加载 React router 中的另一条路由被加载到它的位置 这是代码 App js const isLoggedIn setIsLoggedIn React useState fal