使用到达路由器时如何清除location.state?

问题描述

在我的 React 应用程序中,我根据用户的来源对路由组件的初始化/渲染执行条件逻辑。如果他来自页面 A,则指向页面链接保存在路由呈现时从 this.props.location.state 读取的状态数据。但是在刷新时,我需要页面“忘记”用户来自哪里(或者更具体地说,清除 location.state)。

不幸的是,Reach Router 不使用 history 作为依赖项,因此像 these 这样提倡 history.update()解决方案似乎不起作用。

解决方法

首先,您正在查看的 history.update() 文档是针对 react-router 的,而不是针对reach-router(它们非常相似但不一样,查看错误的文档只会让您头疼) ).

您可能会遇到的下一个问题是您需要弄清楚 location.state 的哪一部分需要更改。这取决于您在用户导航到页面时在状态中设置的内容。默认情况下,reach-router 状态只包含一个键,用于条件渲染的状态是您设置的值。因此,您需要通过将值设置为 null 或 false 来移除 location.state.value(值是您设置的任何值),这将停止条件渲染。