通常情况下,使用 createSlice
已经足够满足大多数需求,而不需要直接使用 createReducer
。但是,在某些特定场景下,createReducer
仍然有其用处:
-
更细粒度的控制:
当你需要对 reducer 的行为进行更精细的控制时,createReducer
可能更合适。它允许你直接定义 action 类型到 reducer 函数的映射,而不是通过createSlice
的自动生成机制。 -
复杂的 action 处理逻辑:
如果你有非常复杂的 action 处理逻辑,可能需要在多个地方重用或者需要更灵活的组合方式,createReducer
可能更适合。 -
与现有代码集成:
当你在一个已经使用传统 Redux 模式的项目中逐步引入 Redux Toolkit 时,createReducer
可能是一个更平滑的过渡选择。 -
自定义 action 类型:
如果你需要使用自定义的 action 类型(而不是createSlice
自动生成的类型),createReducer
可能更合适。 -
动态 reducer:
在某些高级场景下,你可能需要动态地添加或修改 reducer。这种情况下,createReducer
可能提供更多的灵活性。
然而,对于大多数应用场景,createSlice
是更推荐的选择,因为它:
- 自动生成 action creators 和 action types
- 简化了 reducer 逻辑的编写
- 提供了更好的类型推断
- 减少了样板代码
总的来说,除非你有特殊的需求或者在处理特定的边缘情况,否则 createSlice
通常是更好的选择。它提供了更高级的抽象,使得 Redux 的状态管理变得更加简单和直观。
Citations:
[1] https://juejin.cn/post/7085151613035216909
[2] http://cn.redux.js.org/usage/code-splitting
[3] https://zenn.dev/kiriyama/articles/18911ad1e16e9b
[4] https://toolkit.redux.js.cn/api/createReducer
[5] https://blog.csdn.net/weixin_57017198/article/details/133755838