我们有一个由数个页面组成的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中使用多个商店的足够文档。也许我可以通过参数将商店传递到下一页...?像这样的东西
有人可以帮忙吗?预先感谢。
答案 0 :(得分:0)
要模拟每个选项卡的相同网站持久性,我将在页面即将刷新之前(window.beforeunload或类似内容)
1-写有关我的面包屑的localStorage
2-刷新
3-从localStorage读取有关我的面包屑的信息以正确初始化自己(因此此处的数据应该是我的,因为我刚刚写了它)
4-从localStorage删除面包屑信息(以防止其他标签读取)
现在,仍然存在用户仅关闭选项卡的情况,因此您将在localStorage中获得有关面包屑的陈旧数据。您可以添加一些过期机制(您可能会认为localStorage中早于10秒的数据是陈旧的,只是假装它不在此处,请在步骤3删除它。)Cookie的工作原理几乎相同,但内置在到期机制中。