如何在redux [reactjs]中为每个标签设置单一存储?

时间:2019-03-26 01:22:25

标签: reactjs redux

我们有一个由数个页面组成的Web应用程序,其中包含从数据库检索到的数据的链接。单击一个链接[数据]后,应将用户定向到另一页面。对于页面之间的导航,我们使用了面包屑。面包屑存储在redux存储中。当前,当用户尝试按Ctrl键单击或单击新标签页中的链接时,我们设法在多个标签页中使用单一存储。因此,如果用户在新选项卡中打开3个单独的链接[数据],则刷新这些选项卡/页面时,在面包屑上进行的更新会影响以前打开的选项卡。例如:

在主页上,我具有以下链接:

数据_1 数据_2 数据_3

主页中的当前面包屑是这样的: 主页/

用户在新标签中打开Data_1后,新标签中的预期面包屑为: 主页/数据_1 /

类似地,如果用户尝试打开Data_2和Data_3,则在新选项卡中,面包屑应分别显示为选项卡1和选项卡2,如下所示:

首页/数据_2 /

主页/数据_3 /

在当前实现中,无论何时打开新链接,我都设法更新了面包屑的状态,以使面包屑[0]等效于HomePage,而面包屑[1]最初是Data_1,然后成为Data_2,最后是Data_3。因此,breadcrumb [1]的最后一个值是Data_3,因为那是最后打开的链接。我的问题是,每当用户刷新先前打开的与Data_1和Data_2相对应的选项卡/页面时,由于它们都使用单个存储,并且面包屑[1]已更改为Data_3,因此在Data_1和Data_2页面中的面包屑也变为Data_3。 / p>

在这种情况下,我可以考虑使用多个存储,因为我认为这可能是给定用例的唯一解决方案。同时,我在网上找不到有关在redux中使用多个商店的足够文档。也许我可以通过参数将商店传递到下一页...?像这样的东西

有人可以帮忙吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

要模拟每个选项卡的相同网站持久性,我将在页面即将刷新之前(window.beforeunload或类似内容)

1-写有关我的面包屑的localStorage

2-刷新

3-从localStorage读取有关我的面包屑的信息以正确初始化自己(因此此处的数据应该是我的,因为我刚刚写了它)

4-从localStorage删除面包屑信息(以防止其他标签读取)

现在,仍然存在用户仅关闭选项卡的情况,因此您将在localStorage中获得有关面包屑的陈旧数据。您可以添加一些过期机制(您可能会认为localStorage中早于10秒的数据是陈旧的,只是假装它不在此处,请在步骤3删除它。)Cookie的工作原理几乎相同,但内置在到期机制中。