2016-12-23 27 views
1

我在这里我们使用的某些页面上反应的应用程序。它的一个非常大的网站,并将其转化为SPA将毫无意义,因为大部分内容都是静态的。阵营NON SPA历史

但是在这里我们需要的东西是互动的,我使用的反应和反应,终极版的页面。

所以我有一个让人们筛选了他们的搜索结果(同样的事情,90%的网页是与搜索做的)搜索页面的生成的过滤器(从弹性搜索聚合)的列表。此页面正在使用反应。

可以说我点击一个过滤器制造商,然后我应用过滤器对于某些类型的价格范围。我希望能够点击后退按钮或点击后退按钮,并删除最后一个过滤器,或者更具体地说,将状态恢复到以前的版本。我知道这是可能的,但我一直在线上反应路由器和SPA类型的答案/教程/文档。

在此先感谢!

回答

1

看起来像你需要一个历史:redux-undo可以帮助你与此有关。

关于后退按钮 - 你的意思是你想拦截history.back在这种情况下取​​消过滤器?如果是这样 - 你应该在每次过滤器更改时在window.location中添加一个散列。因此,在这种情况下,有几种策略:

  1. 您可以将所有过滤设置存储在散列中。更新更改状态。它可能对共享链接很有用,但它可能是危险的(你必须验证这些数据),并且链接可能很长(在老式的PHP网站中就像?filter[type]=cars&filter[colour]=red&...)。
  2. 您可以使用redux-undo,并且对于每个新的历史记录状态,只需将历史记录计数器(对历史记录中的每个更改从0增量)推入window.location.hash。那么你可以派遣jumpToPast(indexFromHash)。但是,如果你想让用户有可能与定义的过滤器共享页面 - 你需要弄清楚如何。

我相信还有更多的解决方案,但我认为他们会喜欢这些或更难(使用historyAPI和其他东西)。所以你可以在这里留下你的选择。

如果这不适合你 - 只需写下原因并告诉更多信息。我会更新我的答案。