[讨论] Redux整合Actions和Reducers到一个文件, 是否更合理?

#1

忘了从那看到这种方式, 然后给TJ的Frontent-Boilerplate提了个PR, 就是关于这种方式

个人认为如果使用redux-actions的话 创建Actions基本就几句话, 所以考虑整合Actions和Reducers到同一个文件. 这样的好处是: 便于管理action的名字. reducer和action都用同一个引用. 放在同一个文件同一个domain里很好控制, 以及一目了然

另一个好处是, 如果action名字越来越多到无法掌控, 如果某两个action不小心起了一个名字, 这样redux的dispatcher就会雪崩…
实际上我们根本不关心到底Action起了什么名字, 名字只是给dispatcher来分配到哪个Reducer用的! 所以用这种方式创建Actions和Reducers的话, 就很方便可以使用新的Symbol特性来解决这个问题拉~
例子:

//之前的
const ADD_TODO = 'add todo'
const DELETE_TODO = 'delete todo'
const EDIT_TODO = 'edit todo'
...

//使用 Symbol 之后, 只用给 Symbol(命名空间的名字) 就好了
const ADD_TODO = Symbol('todo')
const DELETE_TODO = Symbol('todo')
const EDIT_TODO = Symbol('todo')
...

这里每个Symbol(‘todo’)都是不互相等同的, 然后createAction和handleActions传入action name的时候 传同一个变量就行了, 比如createAction(ADD_TODO), handleActions({ [ADD_TODO] (state, action) {…}})

完整代码(未使用Symbol)

1 Like
#2

一般都是将这种命名单独放在一个文件, action,reducer共用的.