You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否不借助NGRX的createReducer函数创建Reducer?

问题:是否可以不使用createReducer函数创建Redux Reducer?

我在梳理一份现有代码时,发现有一个未使用createReducer函数语法创建的reducer。下方代码片段中的reviewReducer函数接收与标准reducer相同数量和类型的参数,且能响应action(已通过调试验证)。但奇怪的是,我在create-reducer.ts文件乃至整个应用中都找不到createReducer函数,因此想确认是否可以不使用该函数创建reducer?

代码片段(create-reducer.ts)

import { Action } from 'rxjs/scheduler/Action';

export function reviewReducer(state: State<Any>, action: ReviewActionList) {
  return {
    ...state,
    result: true
  }
}

回答

完全可以不使用createReducer函数来创建Reducer。

Redux对Reducer的核心定义非常简单:它就是一个纯函数,只要满足以下两个要求就有效:

  • 接收两个参数:当前应用状态state和触发的动作action
  • 返回一个全新的状态对象(禁止直接修改原state,必须通过复制+修改的方式生成新状态)

你贴出的reviewReducer完全符合这个标准:它正确接收state和action参数,通过扩展运算符...state复制原状态并更新result字段,返回了新的状态对象,这是最原生、最标准的Reducer写法。

至于createReducer,它只是Redux生态(比如Redux Toolkit)提供的语法糖工具,作用是简化Reducer的编写流程(比如用对象映射替代冗长的switch-case判断),但它并非Redux的必需组件。很多早期Redux项目或者追求轻量的项目,都会直接采用纯函数形式编写Reducer,完全合法且有效。

你在项目中找不到createReducer函数,说明这个项目从一开始就没有依赖这个工具函数,而是直接使用了原生的Reducer写法,这是完全合理的实现方式。


内容的提问来源于stack exchange,提问作者VA1267

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:48:09