首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
快速搭建你的第一个Redux计数器:ng-redux十分钟快速上手教程
📅 2026/10/15 18:37:59
✍️ 爱科研究院
👁 阅读 3,247
【免费下载链接】ng-reduxAngular bindings for Redux项目地址https://gitcode.com/gh_mirrors/ng/ng-redux点击查看免费下载ng-redux 是 AngularJS 与 Redux 的绑定库它让 Angular 组件能直接订阅 Redux store、一键派发 action。本教程带你用十分钟基于仓库内置的计数器示例Counter Example从零跑通点击按钮 → 派发 action → 更新状态 → 视图自动刷新的完整链路是新手学习 ng-redux 用法和 Redux 单向数据流最快的入门路径。 ng-redux 是什么为什么值得学习一句话ng-redux 让 AngularJS 组件读懂 Redux store 的桥。它的核心 API 只有一个 ——connect()。调用后ng-redux 会把 Redux 中的状态切片合并进你的控制器并把 action 创建函数一并挂载上去视图随之自动刷新。整个库的入口非常简洁核心源码都在 src/components/ 下文件职责src/components/ngRedux.js模块注册与 store 创建三种初始化方式src/components/connector.jsconnect()的核心实现src/components/digestMiddleware.js状态变更后触发 Angular 视图刷新src/components/storeWrapper.js复用已有 store 时的桥接逻辑 说明README 中提到如果你使用的是 Angular 2 及以上版本官方团队推荐由同一班人马维护的angular-redux/store方案ng-redux 主要面向 AngularJS1.x项目。 计数器示例的项目结构仓库自带一个开箱即用的计数器示例位于 examples/counter/结构清晰、麻雀虽小五脏俱全文件职责actions/counter.js定义 4 个 action 创建函数reducers/counter.js根据 action 计算新的计数器状态components/counter.jsAngular 指令 控制器connect发生地index.js应用入口创建 Redux storeindex.html页面骨架 十分钟跑通安装与启动步骤第 1 步获取代码git clone https://gitcode.com/gh_mirrors/ng/ng-redux第 2 步安装示例依赖cd ng-redux/examples/counter npm install第 3 步启动开发服务器npm start打开终端提示的 webpack-dev-server 地址你会看到一个计数器页面带有、-、Increment if odd、Increment Async四个按钮。点击按钮数字实时变化 —— 恭喜你第一个 Redux 计数器已经跑起来了 代码拆解四步连接 Angular 与 Redux1️⃣ 定义 Action描述发生了什么在 examples/counter/actions/counter.js 中increment()和decrement()只是返回一个普通对象export function increment() { return { type: INCREMENT_COUNTER }; }另外两个 action 展示了 thunk 中间件的能力incrementIfOdd会先读取当前状态、为奇数时才自增incrementAsync则延时 1 秒后自动加一见 actions/counter.js#L16-L34。2️⃣ 编写 Reducer纯函数计算新状态examples/counter/reducers/counter.js 只有一个纯函数根据action.type返回state 1或state - 1初始值为 0。多个 reducer 通过combineReducers合并成一个 root reducer见 reducers/index.js。3️⃣ 创建 Store入口一行代码搞定examples/counter/index.js 中用createStoreWith完成初始化并注册了redux-thunk中间件angular.module(counter, [ngRedux]) .config(($ngReduxProvider) { $ngReduxProvider.createStoreWith(rootReducer, [thunk]); });createStoreWith是三种初始化方式中最常用的一种另外两种是provideStore复用已存在的 store和createStore完全自定义 store 创建过程完整参数说明见 README.md。4️⃣ 用 connect 连接组件一切的核心examples/counter/components/counter.js 是整个示例最关键的一段constructor($ngRedux, $scope) { const unsubscribe $ngRedux.connect(this.mapStateToThis, CounterActions)(this); $scope.$on($destroy, unsubscribe); } mapStateToThis(state) { return { value: state.counter }; }connect一次做了两件事合并状态把state.counter以counter.value的形式合并到控制器上模板里直接写{{counter.value}}即可见 components/counter.html挂载 actions把 actions 目录里的increment、decrement等函数也绑到控制器上按钮写ng-clickcounter.increment()就能直接调用。最后一行$scope.$on($destroy, unsubscribe)保证组件销毁时取消订阅避免内存泄漏 —— 这是 ng-redux 的最佳实践千万不要漏掉。 常见问题与进阶小贴士状态变了但视图不刷新ng-redux 内置的 digestMiddleware 会在每次 store 更新后自动触发 Angular 的$digest正常情况无需手动调用$apply。大型应用刷新太频繁、页面卡顿可通过$ngReduxProvider.config.debounce配置wait与maxWait对 digest 做防抖机制见 digestMiddleware.js。想调试 state 变化示例已内置 Redux DevTools入口在 examples/counter/devTools.js。中间件支持依赖注入以字符串形式传入的中间件名称会经 Angular 注入器解析方便在中间件里使用$http等服务。TypeScript 用户库自带类型定义文件 index.d.ts。 延伸阅读与下一步完整 API、三种初始化方式与 DevTools 配置README.md版本变更记录CHANGELOG.md进阶示例异步数据加载examples/async/学完这个计数器你就掌握了 ng-redux 的核心用法创建 store → connect 组件 → 订阅与取消订阅。建议下一步打开 examples/async/ 示例看看异步请求场景下 action 与组件是如何协作的。赞分享【免费下载链接】ng-reduxAngular bindings for Redux项目地址https://gitcode.com/gh_mirrors/ng/ng-redux点击查看免费下载相关推荐终极指南Deep-Compression-AlexNet的核心原理与实现步骤详解终极指南Deep Compression AlexNet的核心原理与实现步骤详解 Deep Compression AlexNet是一个基于Deep CompRedux Toolkit快速入门10分钟搭建第一个ReduxReact应用附完整代码Redux Toolkit快速入门10分钟搭建第一个ReduxReact应用附完整代码 Redux ToolkitRTK是官方推出的 Redux 状前端状态管理从零开始TVBoxOSC如何让你的老旧电视盒焕发新生从零开始TVBoxOSC如何让你的老旧电视盒焕发新生 你是否曾经面对家中那台反应迟缓的电视盒子感到无奈下载的电影无法播放、格式不支持、字幕乱码……这些问题是创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/15 18:37:59
雷达导引头系统建模仿真:从信号级到数据级的工程落地与避坑指南
2026/10/15 18:32:58
电子工程师面试真题:光耦隔离电源使能电路分析
2026/10/15 18:32:58
从底层智算算力到顶层AI应用,移动云为数字中国打造智慧“引擎”|TaoToken统一Key打通调用链路
2026/10/15 19:33:30
AI不做裁判:不排序不打分的讨论系统设计实践
2026/10/15 19:33:30
Linux 6.6内核内存管理深度解析(三):页表与缺页处理 — 虚拟地址怎么按需映射到物理页
2026/10/15 19:33:30
fastjson 1.2.84 能在 JDK 7 上跑吗?实测:编译能过,一启动就 UnsupportedClassVersionError
2026/10/15 19:33:30
品牌被跟卖?eCommerce-Skills如何用AI技能抵御劫持、假货与违规定价
2026/10/15 19:33:30
商业模式画布为什么半年就没人看了:把九宫格当数据结构维护
2026/10/15 19:28:26
Windows文件共享权限配置:禁止复制与下载的落地方法
2026/10/15 0:02:59
AI Coding时代的柔性之美:从静态软件到自演化软件,软件研发正在重新进化
2026/10/15 0:02:59
亨得利客户服务中心官方网点分布一览:2026年全国多城门店地址与最新联系电话公布
2026/10/15 0:02:59
防关联浏览器哪个好?三款产品实测差异解析
2026/10/13 12:25:09
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/14 18:35:19
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/14 14:52:59
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/15 1:07:55
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/15 5:07:59
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/15 8:10:01
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)