推荐使用redux和react-router进行深度链接的方法
Recommended approach to deep linking using redux and react-router
我正在使用React (15.3.0), Redux(3.5.2)和React -router(2.6.1)构建一个web应用程序。我包含了一些版本,因为我看到了一些相关的帖子,但他们引用了这些库的旧版本。
我有一些状态,我想在URL上持久化,以便用户可以深度链接到它。通过深度链接,我的意思是用户可以直接链接到页面的某个状态。我的应用程序中有各种页面,每个页面都有一个单独的reducer,每个页面的状态应该在页面之间保持。
我读过Dan Abramov推荐的方法:如何同步Redux状态和url哈希标签参数除了在页面之间持久化状态之外,这看起来还可以。示例场景:
用户到达第一页:
/page1
用户与页面交互,导致状态保存在URL:
/page1?state={...}
用户转到第二页:
/page2
用户与页面2的交互:
/page2?state={...}
用户链接到第1页,希望在离开时看到该页。问题!我们如何从第一页恢复状态?
我看过react-router-redux,但是我不知道它是否做了我需要它做的事情。
这个问题有一个共同的方法吗?如果有,是什么?如果没有,你能建议一个方法吗?
我相信这个问题的答案不止一个;你只需要选择一个并实现它。
如果是我,我会这样做:
- 使用redux存储作为状态 的唯一真实来源
- 以某种方式订阅存储(可能是redux中间件),并在page1的相关状态发生变化时更新url参数
- 如果用户访问
/page1
,使用存储状态(我假设状态需要同步到服务器才能存储/恢复它)。 - 如果用户访问
/page1?state={...}
, a)将URL状态合并到存储/恢复状态或b)跳过恢复直接使用URL。
我甚至会更进一步,不同步状态到url,因为这似乎是浪费精力(除非用户依赖于书签页面)。只需渲染一个React组件,说"共享这个URL",并让它渲染一个URL与适当的查询参数。
相关文章:
- 简单的移动重定向/深度链接实施
- 在 Apache 中使用 ngRoute 进行角度路由深度链接
- 使用URL锚点深度链接相册,无需劫持后退按钮
- AngularJS中的多层深度链接
- 当模型在Angular中更改时,自动更新深度链接的url
- 如何为应用深度链接创建超链接文本
- Facebook分享深度链接 - Javascript
- 如何在网站中进行深度链接
- 应用程序关闭时,用于深度链接的LinkingIOS.addEventListener不起作用
- history.js可以在没有哈希或的情况下进行URL深度链接吗?性格
- Angular's深度链接-动态链接与静态链接
- 深度链接在Facebook/Messenger中打开时未打开本机应用程序(在其他应用程序中工作…)
- FancyBox/Popup深度链接
- 从深度链接的开头删除/#/
- 从外部到Ember应用程序的深度链接
- HTML5/jQuery:pushState和popState-深度链接
- Node Express服务器深度链接不支持AngularJS的html5Mode
- 如何将深度链接添加到HTML5 Up模板中?
- Angular ng-repeat不支持深度链接
- Android -深度链接并不是在所有情况下和所有浏览器上都能工作