SPA

时间:2017-03-11 09:40:19

标签: javascript react-router single-page-application

我希望用户为其当前搜索添加书签或复制/粘贴,以便他们可以使用相同的参数进行搜索。

  • 我正在使用搜索参数的GET参数
  • 我正在推送导航历史记录中的网址

问题是:

假设用户使用param1进行搜索,然后使用param2进行搜索。 当他按下后退按钮时,他不会看到param1的结果。

那是因为我们通过ajax发送GET请求并使用javascript更新ui而不刷新页面。

如果您想显示正确的先前搜索结果,我猜

  • 我可以将搜索结果本身保存在堆栈中(我猜它太贵了)
  • 或者我可以使用推送的网址将搜索参数保存在堆栈中,如果可能,请通过网络或离线进行搜索。

我猜这种问题可能发生在SPA的许多领域,而不仅仅是搜索。

我想知道人们如何解决这个问题,以及是否有一个被广泛接受的解决方案,无论是策略还是图书馆......

我正在使用react,react-router,redux。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用哈希标记将搜索字符串添加到您的网址吗?

window.location.hash = 'SEARCH_1';

我不确定这是否适合您的需要,但您可以在搜索功能的成功回调中添加此代码。它将使用户能够使用浏览器返回按钮。

在componentDidMount()中,您需要检查哈希标记是否为空。如果它不为null,则需要在组件完成加载时调用搜索函数来检索结果。