我正在使用类似于React的方法进行我的项目,我的问题是我的还原器非常“平坦”,但是它们需要处理不同状态树区域中的许多更新,因此它们变得越来越复杂。
例如,在分派动作‘DO_ then’之后,首先我需要在3 LOC内更新我的状态,但是,当项目增长时,我需要处理其他特性,有人希望在执行相同的操作后看到基本结果+额外的结果。所以你可以想象,经过几个星期后,减员们变得“胖”起来,就像他们接触到同一棵树的许多不同区域,以同样纯净的方式,但是很难正确地构造它们内部的代码(一个状态树和一个商店)。
在大多数教程中,我只能找到给定的场景:
就我而言,这就像:
case SELECT_FILTER:
return Object.assign({}, state, {
oneProperty: ...,
anotherProperty: null,
nextProperty: false
// and the logic is getting bigger and bigger
}):/
我试着创建“还原器的集合”--过滤器减速器,列表减速器等等,但问题是我在同一页面上工作,传入的特性会带来横切的变化。在较小的应用程序中,简单的分组是可以的,但是现在每个减速机似乎对我状态的太多部分感兴趣。
那么,我的问题是如何正确地构造我的减速机?也许我在州树里放了太多的“地方州”?还是别的什么?我期待着看到你的解决方案与组成和结构减速器。
发布于 2017-07-07 18:03:30
去年,我为Redux文档编写了一个名为“结构减速器” :)的章节。它演示了组织和组成减速器逻辑的几种有用的技术。特别是,您可能对有关“和“重用还原逻辑”的部分感兴趣。
我的“实用Redux”系列教程还演示了一些更高级的还原器结构,特别是post 实用Redux,第7部分:表单更改处理、数据编辑和特性还原器。
还需要考虑分派多个“原语”动作,这些动作可以按顺序分派,以形成更大的行为。例如,您可能会有一个thunk将BASIC_UPDATE、SPECIFIC_EXTRA_UPDATE_1和SPECIFIC_EXTRA_UPDATE_2分送到一行。对于性能有一些需要注意的问题,但是这是一种有效的方法( perf关注点可以通过不同的批处理策略来解决)。有关更多信息,请参见调度多个动作和减少存储通知事件上的Redux条目、我的博客文章习语修炼:对唐太斯的几点思考和Redux目录中的Store#Store更改订阅部分。
https://stackoverflow.com/questions/44976249
复制相似问题