资讯动态

快速搭建你的第一个Redux计数器:ng-redux十分钟快速上手教程

发布时间:2026/10/15 18:38:04 来源:尧图企业网站定制
【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑