首页 > 解决方案 > 路由更改时反应路由器的位置状态变为未定义

问题描述

我想url query 在位置上存储为状态。

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

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

标签: reactjsreact-router

解决方案


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

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

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

如果你真的想使用 location.state,你的路由需要有某种备份计划,以便在 location.state 为空时使用一些默认值。


推荐阅读