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

如何将Redux中的action抽离到单独文件?基于现有代码的技术咨询

问题1:你代码中的action是什么

Redux 规范里的 action 本质是携带type字段的普通 JavaScript 对象,作用是告诉 reducer 要执行什么类型的状态修改,可选的payload字段用来携带更新需要用到的参数。
你当前代码里和 action 相关的内容分为两部分:

  • GET_REQUEST:是 action 类型常量,用来唯一标记一类操作,避免后续写代码时硬编码字符串出现拼写错误
  • GetCommitsAndMembersDataAction:是 action creator(action生成函数),调用时传入你需要的 payload 就能直接返回符合格式的 action 对象,传给 dispatch 方法就能触发 reducer 执行状态更新

问题2:如何把action抽离到独立文件

你可以按照以下步骤操作:

  1. 新建专门存放当前模块 action 的文件,比如命名为itemsActions.js,把 action 类型常量、action creator 都移到这个文件中,文件内容如下:
// action 类型常量
export const GET_REQUEST = "GET_REQUEST";

// action 生成函数
export const GetCommitsAndMembersDataAction = (payload) => ({
  type: GET_REQUEST,
  payload,
});
  1. 修改你原有的 reducer 文件,移除已经抽离的常量和函数,改为从新建的 action 文件导入依赖:
import { GET_REQUEST } from './itemsActions.js';

const initalState = {};

export default function iteams(state = initalState, action) {
  switch (action.type) {
    case GET_REQUEST:
      return { ...state, ...action.payload };
    default:
      return state;
  }
}
  1. 后续在组件中需要触发该 action 时,直接从itemsActions.js导入对应的 action 生成函数即可,不用再从 reducer 文件中导入相关内容,模块职责拆分更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:24:02