Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应非SPA历史_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript 反应非SPA历史

Javascript 反应非SPA历史,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我有一个应用程序,我们在某些页面上使用react。这是一个相当大的网站,把它变成一个温泉将是毫无意义的,因为大部分内容是静态的 然而,在需要交互的页面上,我使用了react和react redux 所以我有一个搜索页面,它构建了一个过滤器列表(弹性搜索的聚合),让人们过滤他们的搜索结果(90%的网络都在使用搜索)。此页面正在使用react 假设我为制造商单击一个过滤器,然后为某种价格范围应用一个过滤器。我希望能够点击后退按钮或单击后退按钮,让它删除最后一个过滤器,或者更具体地说,将状态移回以前的

我有一个应用程序,我们在某些页面上使用react。这是一个相当大的网站,把它变成一个温泉将是毫无意义的,因为大部分内容是静态的

然而,在需要交互的页面上,我使用了react和react redux

所以我有一个搜索页面,它构建了一个过滤器列表(弹性搜索的聚合),让人们过滤他们的搜索结果(90%的网络都在使用搜索)。此页面正在使用react

假设我为制造商单击一个过滤器,然后为某种价格范围应用一个过滤器。我希望能够点击后退按钮或单击后退按钮,让它删除最后一个过滤器,或者更具体地说,将状态移回以前的版本。我知道这是可能的,但我一直在网上浏览react router和SPA类型的答案/教程/文档


提前谢谢

看起来您需要一份历史记录:这可能会对您有所帮助

“关于后退”按钮-在这种情况下,您的意思是要截取history.back并撤消筛选器吗?如果是这样,您应该在每次更改筛选器时向window.location添加一个哈希。因此,在这种情况下,有几个策略:

  • 您可以将所有筛选设置存储在哈希中。并在更改时更新redux状态。共享链接可能很有用,但可能很危险(您必须验证此数据),而且链接可能很长(在老式的PHP网站中,这就像
    ?filter[type]=cars&filter[color]=red&……
  • 您可以使用redux undo,对于每个新的历史记录状态,只需将类似于历史记录计数器的内容(历史记录中的每次更改从0递增)推入window.location.hash。这样,您就可以调度
    jumpToPast(indexFromHash)
    。但是,如果您想让用户能够使用已定义的过滤器共享页面,则需要弄清楚如何共享
  • 我确信还有更多的解决方案,但我认为他们会喜欢这些,或者更难(使用historyAPI和其他东西)。所以你可以在这上面留下你的选择

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