当前位置: 首页 > news >正文

react中redux的connect作用是什么

一、connect 的作用(一句话)

connect 用来把 Redux store 的 state 和 dispatch 注入到 React 组件中,使组件能读取和修改全局状态。


二、connect 解决了什么问题?

React 组件本身:

  • 不能直接访问 Redux store

  • 不能订阅 store 变化

  • 不能 dispatch action

👉 connect 做了桥梁(bridge)作用

Redux Store ↔ React Component

三、connect 的核心功能

✅ 1. 读取 Redux state

mapStateToProps

✅ 2. 派发 action

mapDispatchToProps

✅ 3. 订阅 store 更新

  • state 变化 → 组件自动 re-render


四、connect 基本用法示例

import { connect } from 'react-redux'; function Counter({ count, add }) { return ( <> <p>{count}</p> <button onClick={add}>+</button> </> ); } const mapStateToProps = (state) => ({ count: state.counter, }); const mapDispatchToProps = { add: () => ({ type: 'ADD' }), }; export default connect(mapStateToProps, mapDispatchToProps)(Counter);

五、connect 做了哪些事?(底层原理)

1️⃣ 订阅 Redux store

store.subscribe()

监听 state 变化


2️⃣ 计算 props

  • 执行mapStateToProps(state)

  • 执行mapDispatchToProps(dispatch)


3️⃣ 注入组件

<Component {...props} />

4️⃣ 控制重渲染(性能优化)

  • shallowEqual

  • selector

  • memo

👉只在 state 相关变化时 render


六、connect vs Hooks(useSelector / useDispatch)

Redux 新推荐写法

const count = useSelector(state => state.counter); const dispatch = useDispatch();

为什么 connect 仍然重要?

  • 老项目大量使用

  • 性能可控

  • HOC 模式清晰


七、connect 的性能优化点(面试加分)

  • 避免全量订阅

  • 选择性订阅 state slice

  • shallow compare

  • memoized selector(reselect)


八、面试标准回答(30 秒)

connect 是 react-redux 提供的高阶组件,用于把 Redux store 中的 state 和 dispatch 映射为组件的 props;
它内部订阅 store 更新,在 state 变化时触发组件重新渲染,并通过浅比较减少不必要的更新。


九、面试官常追问(你已经稳了)

  • connect 为什么性能好?

  • HOC 和 Hooks 有什么区别?

  • useSelector 如何避免重渲染?

  • connect 和 Context 有什么关系?


十、一句话终极总结

connect = Redux 与 React 的桥梁。


http://www.jsqmd.com/news/314256/

相关文章:

  • 数据清洗全攻略:让大数据分析更精准的7个步骤
  • 2025.12.13 作业- # P1717 钓鱼
  • 2025.12.13 作业 - # P1649 [USACO07OCT] Obstacle Course S
  • CCF CSP真题复盘
  • 2025.12.13 作业 - # P1638 逛画展
  • 408真题解析-2010-17-计组-TLB\Cache\Page关系
  • jEasyUI 启用行内编辑
  • Thinkphp和Laravel企业内部小型网络管理系统的设计与实现_
  • Thinkphp和Laravel基于hadoop大数据的心脏病患者健康数据分析系统_
  • 构建跨端提示体验:Flutter × OpenHarmony 实现底部 SnackBar 卡片
  • AI原生应用架构设计:混合推理的模块化实现
  • 【Flutter × OpenHarmony】跨端开发实现全局Toast提示卡片
  • 基于深度学习YOLOv10的疲劳驾驶识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 打造跨端驾照学习助手:Flutter × OpenHarmony 实战解析
  • 基于深度学习YOLOv10的吸烟识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • P5825 排列计数 题解 / 二项式反演 容斥
  • 基于深度学习YOLOv10的固体废物识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 梦断代码阅读笔记1
  • 构建跨端驾照学习助手:Flutter × OpenHarmony 的用户信息与驾照状态卡片实现
  • memset 函数用于将一块内存区域中的每个字节设置为特定的值
  • 从进度可视化出发:基于 Flutter × OpenHarmony 的驾照学习助手实践
  • 试玩5款台球小游戏,最上头的居然是这款
  • [特殊字符] Go语言从入门到实践(一):为什么Go能让程序员“少加班“?
  • 数据跨境、隐私泄露、审计溯源——出海企业三大安全必答题
  • 大数据ODS、DWD、DWS、ADS 分层
  • 力扣热题100 20. 有效的括号
  • 2025.12.13 总结 - # P1638 逛画展
  • 2025.12.13 总结 - # P2920 [USACO08NOV] Time Management S
  • 介绍高驰二手运动手表回收价格,全国上门回收
  • 单例模式 枚举