首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
React-Redux核心原理与容器组件实战
📅 2026/10/6 8:04:56
✍️ 爱科研究院
👁 阅读 3,247
Redux纯JavaScript状态管理库不绑定任何UI框架可在React、Vue、Angular甚至原生JS项目中使用只负责全局状态的集中存储、更新规则定义不处理视图层的渲染同步逻辑。React-Redux专门为React生态设计的绑定工具完全依赖React的Context机制实现store的全局传递只服务于React项目核心作用是打通Redux状态与React组件的自动渲染链路。连接容器组件和UI组件1、根据上期文章的代码进行改造成UI组件import { React{ Component } } from react export default class Count extends Component { state { car:0 } increment () { const { value } this.selectNumber } decrement () { const { value } this.selectNumber } incrementIfOdd () { const { value } this.selectNumber } incrementAsync () { const { value } this.selectNumber } render( div h1当前求和为/h1 select ref{ c this.selectNumber c } option value11/option option value22/option option value33/option /select button onClick { this.increment }/button button onClick { this.decrement }-/button button onClick { this.incrementIfOdd }当前求和为奇数再加/button button onClick { this.incrementAsync }异步加/button /div ) }2、容器组件下载react-redux依赖。创建containers文件用以放入更多的容器组件便于管理并在其创建Count文件夹和Count文件夹里的index.jsx文件//引入之前改造的UI组件 import CountUI from ./count //引入store import store from ../redux/store //引入connect用于连接UI组件与redux import { connect } from react-redux //使用connect()()创建并暴露一个Count的容器组件 //const CountContainer connect()(CountUI) export default connect()(CountUI)展示页面的时候就不能使用改造的UI组件了就需要使用容器组件了App.jsximport React,{ Component } from react import Count from ./containers/Count import from ./redux/store export default class App extends Component { reder(){ return ( div Count store { store }/ /div ) } }react-redux的基本使用1、容器组件改造//引入之前改造的UI组件 import CountUI from ./count //引入store import store from ../redux/store //引入connect用于连接UI组件与redux import { connect } from react-redux //a函数返回的对象中的key就作为传递给UI组件props的key //value就作为传递给UI组件props的value--状态 function a(){ return { n900 } } //b函数返回的对象中的key就作为传递给UI组件props的key //value就作为传递给UI组件props的value--操作状态的方法 function b(){ return { jia:(){ console.log(1) } } } //使用connect()()创建并暴露一个Count的容器组件 export default connect(a,b)(CountUI)2、UI组件中打印propsrender(){ console.log(this.props) }利用这点UI组件就可以展示容器组件传递的值render( div h1当前求和为{ this.props.n }/h1 select ref{ c this.selectNumber c } option value11/option option value22/option option value33/option /select button onClick { this.increment }/button button onClick { this.decrement }-/button button onClick { this.incrementIfOdd }当前求和为奇数再加/button button onClick { this.incrementAsync }异步加/button /div )3、容器组件中传递store或操作给UI组件//引入之前改造的UI组件 import CountUI from ./count //引入store import store from ../redux/store //引入connect用于连接UI组件与redux import { connect } from react-redux //a函数返回的对象中的key就作为传递给UI组件props的key //value就作为传递给UI组件props的value--状态 function a(state){ return { countstate } } //b函数返回的对象中的key就作为传递给UI组件props的key //value就作为传递给UI组件props的value--操作状态的方法 function b(dispatch){ return { jia:(number){ //通知redux执行方法 dispatch(type:increment,data:number) //也可以使用我们在之前的文章中提到的action改写 //dispatch(createIncrementAction(number)) } } } //使用connect()()创建并暴露一个Count的容器组件 export default connect(a,b)(CountUI)4、UI组件调用容器组件方法increment () { const { value } this.selectNumber this.props.jia(value*1) }5、正式化容器组件//引入之前改造的UI组件 import CountUI from ./count //引入store import store from ../redux/store //引入createIncrementAction、createDecrementAction、createIncrementAsyncAction 。。。。。 //引入connect用于连接UI组件与redux import { connect } from react-redux //mapStateToProps函数返回是一个对象 //返回的对象中的key就作为传递给UI组件props的keyvalue就作为传递给UI组件props的value //mapStateToProps用于传递状态 function mapStateToProps(state){ return { countstate } } //mapDispatchToProps函数返回是一个对象 //返回的对象中的key就作为传递给UI组件props的keyvalue就作为传递给UI组件props的value //mapDispatchToProps用于传递操作状态的方法 function mapDispatchToProps(dispatch){ return { jia(number){ dispatch(createIncrementAction(number)) }, jian(number){ dispatch(createDecrementAction(number)) }, jiaAsync(number,time){ dispatch(createIncrementAsyncAction(number,time)) }, } } //使用connect()()创建并暴露一个Count的容器组件 export default connect(mapStateToProps,mapDispatchToProps)(CountUI)总结1、明确两个概念UI组件不能使用任何redux的api只负责页面的呈现、交互等容器组件负责和redux通信将结果交给UI组件2、如何创建一个容器组件——靠react-redux的connect函数connect(mapStateToProps,mapDispatchToProps)(UI组件)——mapStateToProps映射状态返回值是一个对象——mapDispatchToProps映射操作状态的方法返回值是一个对象3、容器组件中的store是靠props传进去的而不是在容器组件中直接引入的
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/6 8:04:56
具身智能:从「会飞的相机」到「空中作业智能体」——无人机从业者的进阶指南
2026/10/6 8:04:56
商品条码查询API:自动补全商品信息的完整方案
2026/10/6 8:04:55
北京中大型企业通勤班车怎么做?嘟嘟巴士的落地思路
2026/10/6 8:59:59
工作流是什么?从AI节点编排到Coze、Dify、n8n、ComfyUI的通用思维框架
2026/10/6 8:59:59
dead_code_analyzer鸿蒙适配:Flutter HAP包体积与工程净化
2026/10/6 8:59:59
Flutter for OpenHarmony实战:商品详情页迁移避坑指南
2026/10/6 8:59:59
Excel函数场景化实战指南:查询、汇总、清洗与报错排查
2026/10/6 8:59:59
wss 连接配置详解:TLS 握手、Nginx 反代与心跳重连避坑
2026/10/6 8:54:58
Redis可视化工具选型与实战:连接、排障与缓存治理
2026/10/6 1:04:29
搭建无线EEG采集前端:BW16+ESP32-CYD实时波形显示实战
2026/10/6 1:04:29
CH10D功放芯片DIY音箱实战:从选型到调试的完整指南
2026/10/6 1:04:29
视频序列目标跟踪实战:解决ID跳变与遮挡丢失
2026/10/5 4:43:56
Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化
2026/10/6 4:47:52
多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系
2026/10/5 13:05:37
hindsight:面向LLM应用的事后可观测性工程实践
2026/10/5 20:28:25
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/5 20:28:23
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/5 20:28:21
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)