React Router与Redux First路由

use*_*266 8 javascript reactjs redux react-redux

我和我的团队正在使用React,Redux和React Router开发一个应用程序。我们的应用程序具有相当复杂的路由要求,但并不疯狂:将默认查询参数添加到导航中的URL,将多个路由映射到同一视图,根据应用程序状态重新路由某些路由,并恢复以前的状态,仅举几例。我遇到的一个大问题是我无法自动路由和更新状态。路由必须在状态更新之前或之后进行,这会导致中间状态,即路由已完成而不是状态更新,反之亦然。例如,导航到特定视图应加载一些内容并将加载状态更新为处于加载状态。也,一些组件会在挂载时触发redux动作,因此路由事件直接导致redux动作,因此有点像调度多个redux动作。在某些情况下,这会导致许多错误和令人讨厌的浏览体验。我读这篇文章,似乎为我的问题提供了答案。根据这篇文章,使用react router和redux会导致两个事实来源。分别更新它们会导致这些问题。我喜欢这样的想法,即只有一个状态作为真​​理的来源,所有事件都通过同一渠道进行。

但是,似乎React Router是React + Redux应用程序的压倒性优势。react-router在github上有28,355颗星,到redux-first-routing的76 颗星。事实真相的双重来源似乎是一个常见问题。为什么Redux First路由没有被广泛采用?人们如何用React Router解决这个问题?为什么React Router值得将您的组件同时连接到Router和Redux状态的不便之处?

Tel*_*ias 5

我目前正在做与你有着相同目的的研究,据我所知,redux-first 路由的概念已经存在了一段时间了。

尽管这些数字无法与react-router相比,但还有另一个名为redux-first-router的库,它目前似乎是事实上的库(特别是与redux-first-routing相比时)。

至少根据https://medium.com/about-codecademy/react-router-to-redux-first-router-2fea05c4c2b7,这就是Codecademy使用的。

我已经实现了 redux-first-routing 中的教程,您可以在这里找到,但最终,实际上没有路由器,您将必须设置一个兼容的不可知路由器(请阅读此处)。

目前我还没有决定是否保留我已经实现的部分,必须安装其中一个不可知的路由器,或者我是否会像 Codecademy 一样并使用redux-first-router,这就是目前的情况我很想这么做(至少尝试一下)。

当然,我读过的最好的文章是来自Codecademy 的文章,而且他们的示例是最容易理解其工作原理的。您可以直接在https://codesandbox.io/s/m76zjj924j找到它。

编辑:

我最终选择了 redux-first-router ,它非常符合要求。我能够直接从路线获取信息,包括查询字符串,这足以实现基于状态的深度链接。