哪个架构层的一部分是React Redux?



我最近读了" Clean architecture ";鲍勃·马丁著。尽管他在那里解释的原则适用于所有语言,但我很难掌握JavaScript(一般的函数式语言)的这些概念。

我有一个React应用程序,我已经应用了React Redux,但现在当我读了这本书,我想知道我是不是太依赖Redux,我怎么能让自己更独立,这样我就可以很容易地替代Redux与任何其他方法(例如React Hooks)任何时候我想。

Bob Martin强调了我们需要小心架构边界的事实,但是我真的不确定在这种情况下我可以把Redux放在哪里?

我在Redux中做业务逻辑吗?如果是,这是否违反了保持业务逻辑独立的Clean Architecture建议?如果我把我的逻辑放在Redux里,我会变得太依赖它吗?

我有我的纯视图组件只显示数据在他们他们一些viewModel组件处理视图逻辑,但从那里我不确定接下来会发生什么。

一般来说Redux是一个状态容器。Redux可以用来实现facebook为客户端应用程序创建的Flux架构,通常在React中实现,因此名为Redux。

Redux通常位于UI层. 从架构的角度来看,它的使用类似于MVC中的控制器和模型。例如,视图分派一个动作来描述应该做什么。这个动作被分派给执行逻辑(类似于控制器)和更新存储(一种模型)的reducer。在商店更改视图呈现器之后。

由于Redux只是一个状态容器,您也可以在其他层中使用它。希望不是直接的,因为框架属于干净架构的外围。因此,您应该创建一个很好的抽象,并在该抽象背后使用Redux(仅在实现中)。

编辑

如果我有一个用例交互器类。例如,我可以在reducer中调用它,保持用例交互器类中的业务逻辑独立于redux层?

是的。让我试着想象一下我的意思。你有两个句柄两种动作同步和异步动作

Forsync actionsreducer接受action参数,将其转换为请求模型,调用用例并使用响应模型更新状态。

+------+      +--------+       +---------+  request    +----------+
|      |      |        |       |         |  ------->   |          |
| View | ---> | Action | ----> | Reducer |             | Use Case |
|      |      |        |       |         |  response   |          |
+------+      +--------+       +---------+  <-------   +----------+
^                               |
|                               | update
|                               V
|                          +---------+
|   notify subscribers     |         |
+------------------------  |  Store  | 
|         | 
+---------+                                  

Forasync actions异步思维将动作转换为请求模型,调用用例,当它返回响应模型时,它将响应模型传递给reducer以更新状态。

+------+      +---------+  request    +----------+
|      |      |  Async  |  ------->   |          |
| View | ---> |  Thunk  |             | Use Case |
|      |      |         |  response   |          |
+------+      +---------+  <-------   +----------+
^              |
|              | 
|              V
|         +---------+
|         |         |
|         | Reducer | 
|         |         | 
|         +---------+     
|              |
|              | 
|              V              
|         +---------+
|         |         |
+- -----  |  Store  | 
|         | 
+---------+            

Redux应该是中间件的一部分。

相关内容

  • 没有找到相关文章

最新更新