我和我的团队正在使用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状态的不便之处?
我正在使用打字稿创建数据模型范例。我将不同类型的数据存储在不同的地方(SQL、本地缓存)。我想创建一个抽象类,其中包含任何类型的数据存储所需的所有方法(创建、查找、更新、计数、销毁)。这样我就可以扩展该类并针对不同类型的存储以不同的方式实现它,并且如果我缺少某个方法,编译器会警告我。然后,我将在描述数据模型的类中扩展这些实现之一。但是,我需要的一些方法(例如查找和创建)是静态的。我知道打字稿不支持抽象静态方法。是否有类似于我可以使用的抽象方法的东西,以便编译器警告我缺少方法?
我还希望这些静态方法是通用的,并且类型与类相同。我知道这对于标准泛型类来说没有意义。但是,由于此类始终会被扩展并且永远不会实例化,因此我可以在扩展它时键入泛型类,从而自动更新静态方法上的泛型类型吗?