【问题标题】:Accessing redux state in new tabs/windows在新选项卡/窗口中访问 redux 状态
【发布时间】:2026-01-21 02:25:18
【问题描述】:

我正在使用 redux 来存储我的状态。当我导航到同一页面(多个组件但在一个页面上)时,它可以正常工作。但是当我在新标签/窗口的链接中打开时,状态变为未定义。

根据调查结果,刷新页面或在新选项卡/窗口中打开时,redux 状态预计会重置。然后我想到的是在导航到另一个组件时将 store.getState() 作为参数传递,这样如果组件看到状态未定义,它将访问其 props 状态(由前一个组件传递)。

现在,当在新标签页中打开链接时,我需要传递状态。我正在使用 react-router 进行导航。目前,当我单击链接时,状态会传递到其他页面。但是当我在新窗口/选项卡中打开链接时,状态再次变为未定义。我正在使用它导航到指定的链接:

<Link to={link}>{value}</Link>

其中链接是一个常量,包含我需要传递的路径名和状态(store.getState())。

我发现了许多类似的 * 问题[e.g. programmatically-navigate-using-react-router]。我试过使用

<a onClick={history.push(link)}>

但它似乎不起作用。也许我以错误的方式使用它。其他的我只是不知道如何在这种情况下使用/实现。

除了解释之外,请给出示例代码sn-ps。我是 redux/react 的初学者。

谢谢!

【问题讨论】:

  • 遇到了这个 npm 包,它在不同的选项卡之间同步 redux 状态。不确定这是否是您的要求,但请粘贴以防万一:redux-state-sync。不过,在多个选项卡之间同步状态之前需要注意,这可能会导致不必要的副作用。

标签: reactjs redux react-router state


【解决方案1】:

您应该检查的第一件事是您使用的是正确版本的 React-Router。我不确定这种方法是否适用于 V4 之外的任何应用。

如果您确实在使用 React-Router V4,但它仍然无法正常工作。您可以采取的另一种更简洁的方法是,将应用程序的状态保存在本地存储中,不仅在重定向到新选项卡/窗口之后,而且在刷新之后保存状态。

This video by Dan Abramov explains how to do it.

【讨论】:

  • 谢谢!会尝试您的建议并通知您。