将Redux与模型一起使用

Rob*_*n_f 12 models reactjs redux

我已经开始在React中使用Redux了,我非常喜欢它.但是,我目前遇到的问题是除了状态之外,我还需要在整个应用程序中存储/使用更多信息.

在这种特定情况下,我有一个模型,其状态是从API获取的.此模型还有一些关于自身的信息,例如如何在屏幕上显示属性"name"=>"blabla的名称".我理解如何使用Redux处理状态,但是我很难看到我还需要在整个应用程序中传播的其他信息有什么用,但实际上并不是状态.

Ant*_*oin 12

根据雷克斯的说法,国家是唯一的"真相来源".它不应该有重复(这会导致不一致).

所以你的状态应该存储name,但不存储计算的 label属性.

实际上,"blabla的名称"是您的Name值的一个函数(在数学意义上),如果它们不同(例如,如果在某些时候名称==='foo',但标签是'条的名称' '而不是'foo'的名字),那么你有问题......

所以我要做的就是将最小值存储在您的状态(在这种情况下为名称),并直接在Component中计算标签,您需要它.

如果您需要重新使用它,那么创建一个仅将您的名字作为道具的组件,并使用"blablaba的名称"呈现一个字符串(如果我认为名字= blabla).

如果你需要更复杂的计算(比如你有多个标签,日期计算等),你总是可以创建一个函数来输入你的State,并在输出中用你计算的所有东西吐出你的"Model".

Redux本质上非常实用,所以你不妨拥抱它:)


小智 7

我知道我有点迟到了,但我觉得有人可能会使用这个答案.在与React合作多年后,对我来说有用的是有一个类似这样的结构:

  • 状态:设置数据的结构(或"模式").
  • 操作:更改此状态.这些操作可以处理同步或异步操作.
  • Sagas:他们处理异步行为.
  • 选择器:它们处理视图/ API所需的数据结构.
  • 常量:其他数据不会随时间变化而且无法添加到我的状态.

所以说我的应用程序的流程是这样的:一个ACTION被调度=>如果该动作是异步的,则a SAGA正在侦听它并执行fetch操作=>这个saga将更新保存到STATE=> [React components layer from now on ] =>如果我的视图需要来自我的状态的数据以不同的格式出于任何原因我发送它将SELECTOR改变该格式=>然后我将这个新的解析数据附加到我的容器组件.

另一个流程可能是您需要静态数据的流程state.在那个原因我将它保存在一个单独的文件中的对象中,并将其直接导入我的容器组件(我从不直接导入我的子/表示组件中的任何东西.只有其他组件.数据处理在一个单独的层而不是组件).

我现在能想到的第三种流程是当你需要对你的API进行POST时,无论出于什么原因,你所在州的数据需要先进行一些解析才能这样做.在那种情况下,我会做同样的事情,在第一个例子中,但反过来:在执行提取之前调度一个ACTION=>由a SAGA=> 处理我将为我的POST带来我已经构造的数据(sagas有一个方法叫做select为了帮助你在这里使用选择器)=>然后我会执行异步操作=>相应地更新状态.

万一你不知道我的意思是选择器或传奇这里的一些链接: