反应路由器的位置状态在路由更改时变得未定义

2024-01-10

我想存储url query作为所在地的状态。

~   history.push({
+     ...history.location,
+     search: query.toString(),
+     state: {
+       myState: query.toString(),
+     },
+   })

我怀疑当路线改变时会得到状态,但是state become undefined当我从其他路线回来时。


就是这样state(来自历史API)有效。状态附加到会话中的某个位置并且不存在(或者更确切地说,是null)当您直接导航到某个页面时。

一般来说,我不建议使用 location.state 来传递除临时数据(如重定向位置)之外的任何内容。如果您需要将数据附加到某个位置,我建议您使用路径参数或搜索参数,并拥有一个可以从中查找该数据的存储。

// path params
{ pathname: `/path/name/${SOME_ID}` }
// search params
{ search: `?someID=${SOME_ID}` }

如果您确实想使用 location.state,则您的路线将需要有某种备份计划,以便在 location.state 为 null 时使用某些默认值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反应路由器的位置状态在路由更改时变得未定义 的相关文章

随机推荐

  • 为什么实例仅通过其头部进行匹配?

    我将首先介绍一个具体的问题 StackOverflow 的人就是这样 假设您定义了一个简单类型 data T a T a 这种类型是一个Functor Applicative and a Monad 忽略自动派生 要获取这些实例 您必须编写
  • Android 上的 OpenCV 眼动追踪

    我希望使用 OpenCV api 在 android 中进行基本的眼动追踪 我发现在 Andriod 中使用 opencv 似乎有两种方法 要么使用他们的 c 包装器 要么使用 JavaCV api 我愿意这样做 但我正在寻找一些想法或示例
  • 要捕获的正则表达式:单词 {word} word

    我正在尝试捕获 单词 word 单词 我有以下正则表达式 S s S s 它实际上捕获了这种模式 但它也捕获了单词 word 看 https regex101 com r yI64KQ 6 https regex101 com r yI64
  • 放大配置

    我已经安装了 amplify cli 当我输入 amplify configure 时 收到错误消息 amplify 不被识别为内部或外部命令 可操作程序或批处理文件 请分享您的平台 您是在 Linux Windows Powershell
  • Xcode 6 GM 与 iPhone 5s (iOS 8 GM) - 0xE8000070

    我在 iPhone 5s 型号 A1530 iOS 8 版本 12A365 上使用 Xcode 6 GM Seed 版本 6A313 我通过 USB 闪电数据线连接 iPhone 但在 Xcode 中 它显示为 iPhone 5s 不可用
  • 为什么 Foreman 在我按下 Control-C 之前不会输出一些内容?

    我刚刚开始使用 Rails 编程 看起来有两个程序可以用来在本地运行我的项目 rackup 和 foreman 我注意到的一个区别是 foreman 不会输出一些我希望看到的内容 而我会查看是否运行rackup 直到我按 ctrl c 关闭
  • 如何获取 stringbuilder 并将其转换为streamReader?

    如何获取字符串生成器并将其转换为流 所以我的 stringbuilder 必须转换为 StreamReader stream Update 我尝试使用字符串读取器 例如 StringReader sr new StringReader sb
  • Suitecrm - pdf 模板中的 php 代码

    我想在我的 pdf 模板中添加 php 代码 这是我的用例 First is I have a dropdown on my own module 然后我想要的是我的 pdf 模板 我想要基于我的下拉列表的值的 php 条件 例如 if c
  • 包括特定于 ASP.NET MVC4 视图或部分视图的脚本

    我看过很多类似的问题如何在MVC4的局部视图中添加脚本 https stackoverflow com questions 14114084 how to add a script in a partial view in mvc4 and
  • 内联这个函数还是不内联?

    我应该实现一个比较两个相似字符串的函数strcmp但忽略空白字符 所以 strcmpignorews abc a b c 应该给出相同的结果 这是我的实现 namespace void SkipWhitespace const char s
  • saveAsTextFile 到 Spark 上的 s3 不起作用,只是挂起

    我正在将 s3 中的 csv 文本文件加载到 Spark 过滤和映射记录并将结果写入 s3 我尝试了几种输入大小 100k 行 1M 行和 350 万行 前两者成功完成 而后者 350 万行 挂起在某种奇怪的状态 其中作业阶段监控 Web
  • 将 ClickHandler 与 Element 的子元素一起使用

    我需要将具有特定 ClickHandler 的锚点添加到元素中 但我的 Anchor 的 onClick 方法从未被调用 我该如何解决这个问题 Element th DOM createTH Anchor link new Anchor l
  • 使用 Azure 中的第二个(或多个)NIC 访问互联网

    我在 Azure 中有一个虚拟机 带有 Ubuntu 19 04 和 4 个网卡 每个网卡都附加了一个公共 IP 作为示例 这是第二个网卡 如您所见 它的公共 IP 为 191 234 186 19 我的目标是能够从具有不同 IP 地址的每
  • 无论如何要缩短 if ( i == x || i == y) 吗?

    我尝试缩短我的代码 从 if i x i y i z to if i x y z 我知道这种方式是错误的 因为我在日志中得到了不正确的 i 但是 有什么方法可以缩短 Objective C 中的代码吗 你可以使用switch声明 但这并不能
  • PHAsset + AF 网络。真机上无法上传文件到服务器

    目前我正在使用以下代码将文件上传到服务器 NSURLRequest urlRequest AFHTTPRequestSerializer serializer multipartFormRequestWithMethod POST URLS
  • SQL Server 2005 中 LOCK_ESCALATION = TABLE 的等效项是什么?

    我有一个在 SQL Server 2008 中生成的脚本 但我需要针对 SQL Server 2005 数据库执行它 SQL Server 2005 中以下的等效语句是什么 ALTER TABLE dbo Event SET LOCK ES
  • Windows > 首选项中没有服务器

    我正在尝试将 Apache 服务器添加到 Eclipse Juno 我已经安装了 Apache 服务器 7 0 但是当我尝试将其添加到 Eclipse 环境中时 我在中看不到选项服务器窗口 gt 首选项 首选项中必须有一个名为 server
  • glFlush() 在透明背景的窗口上花费很长时间

    我使用的代码来自如何制作具有透明背景的OpenGL渲染上下文 https stackoverflow com questions 4052940 win32 how to make an opengl rendering context w
  • React渲染方法中的for循环[重复]

    这个问题在这里已经有答案了 我想为我的网格创建分页链接 我将 maxPages number 属性传递给组件 但我不能在渲染方法中使用 我能做些什么 var Pagination React createClass render funct
  • 反应路由器的位置状态在路由更改时变得未定义

    我想存储url query作为所在地的状态 history push history location search query toString state myState query toString 我怀疑当路线改变时会得到状态 但是