
这些天之一,我在修补很多redux'a文件,从逻辑上讲,这些文件被移至reducer,actions,action的类型常量。 事实证明,所有这一切都是一项艰巨的任务,将所有这些类型的文件保存在脑海中并追踪逻辑。 还有...尤里卡(Eureka),提出了简化redux逻辑编写的想法。 也许是创建您的自行车,但是谁没有尝试写自行车呢? 但是最主要的不是写作,而是何时写作支持。 让我尝试向您展示我对Redux逻辑的看法。
开始
因此,我们减少了:
取自redux上的码头 。
动作看起来像:
我认为没有必要显示常数。
布尔
我将尝试描述我在阅读代码时遇到的疯狂,尤其是在调试或扩展功能时。
- 搜索-始终需要按
Ctrl + F
和全局Ctrl + Shift + F
- 从腿长的地方看不到。 它来自上面的段落。
- 不,这只是一点点,所以我的整个项目仍然被常量刺穿。 不,我不是反对常量,但是为什么呢? 此外,如果像示例中那样将它们与嵌套一起使用,并且如果将它们与多个嵌套在一起,那么通常这将是一团糟。
- 逻辑是模糊的。 在一个动作中,另一个动作中,只有这两个常数才需要在第三个(可选)常量中处理这些动作。
- 开发或调试时,我需要保持许多文件打开状态。 它来自上面的段落。
好吧等等
逻辑输入
乍一看,也许看起来很奇怪,令人震惊,但在我看来,这就是应有的地位。 我将尝试传达我的模板。
减速器
在Google上发现
齿轮-改变扭矩和动力的机构。 这是一个或多个互相作用的齿轮,它们将发动机转数减小到执行节点可接受的转速。
即,其上的轴具有齿轮,该齿轮将旋转传递至另一个齿轮,该齿轮又旋转至其轴。 我们卸下轴,并随之卸下齿轮。 可以说,这不是一个不连续的模块。
如果进一步进行寓言,则轴是动作,齿轮是逻辑。 由此可见,变速箱在确保扭矩(即应用中的数据)的传输方面起着这样的作用。 它应该支持理想的机制工作环境。
行动
如上所述,这是动作本身,以及要传输的能量(在我们的情况下为数据)的逻辑。
因此,让我们开始吧。 我的自行车
减速器:
export function todoApp(state = initialState, action) { if (typeof action.func === 'function') { return action.func(state); } }
是的,这就是我所有的减速器。 现在也许模式之间会有一个小差距,怎么办? 我们从reducer'a ..中删除了逻辑。 是的 我告诉你,我们从reducer'a中删除了逻辑!
让我们看一下动作:
export function addTodo = (value) => ({ type: 'ADD_TODO' , payload: value, func: (state) =>({...state, value}) }) }
因此,我们提出了负责将数据传输到存储的逻辑。 保留减速器以确保整个机构的运行。 而且他应该做好事,不要被与他无关的事情分散注意力。 而且,我们只能观察腿部成长的顺序,必要时可以快速找到并固定或补充。
值得注意的是,我们删除了常量。 是的,也切换。 这可以减少化简器中O(1)执行的复杂性。
这只是一个示例草图,您可以扩展和删除CombineReducers。 扩展,补充,更改您的需求非常好,可以使用一种工具,使其非常适合您的任务。
最重要的是我想说。

要聪明。 蜜蜂