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

redux

image

image
image
image
image
image
image

image
image

先明确图中核心元素的对应关系:

  • Store 容器:包含两部分——state(公共状态,即“看板数据”)和 listeners(事件池,即“所有已订阅的叫号器集合”)。
  • 图中①:“当公共状态发生改变后,会自动通知事件池中的方法执行”
    这正是 Store 自带的核心机制:状态更新后,自动触发所有通过 subscribe 注册到事件池(listeners)里的回调函数。就像餐厅看板更新后,所有绑定了桌号的叫号器都会被触发(如果状态变化和它相关的话)。

你的结论完全正确:

  1. 图中①是“看板自带的能力”
    当 reducer 处理完 action 并返回新状态后,Store 会自动更新自己的 state,并且主动遍历事件池(listeners)中的所有回调函数并执行。这个“自动通知”的逻辑是 Store 内部实现的,不需要我们干预。

  2. 订阅(store.subscribe)的作用是“往事件池里放回调”
    如果不调用 subscribe,事件池(listeners)是空的,那么图中①的“自动通知”就没有对象可通知(就像顾客没拿叫号器,看板更新了也没人提醒)。
    只有通过 subscribe 把组件的“更新逻辑”(比如“重新渲染+用 getState 拿最新数据”)放进事件池,状态变化时,组件才能收到通知。

  3. 图中④(store.getState())是“订阅后的效果体现”
    组件收到通知后(图中①触发了订阅的回调),才会主动调用 getState() 获取最新状态,进而重新渲染视图。如果没有订阅,组件不会收到通知,也就不会去执行 getState() 并更新——哪怕 state 已经变了,组件展示的还是旧数据。

一句话串起来:

用户点击按钮 → dispatch(action) 给 reducer → reducer 算出新状态 → Store 自动更新 state(自带能力)→ Store 触发事件池里的所有回调(图中①,自带能力)→ 组件通过 subscribe 注册的“更新函数”被执行 → 组件调用 getState() 获取新数据(图中④)→ 视图更新。

没有订阅,就没有“更新函数”放进事件池,图中①的“自动通知”就无从谈起,组件自然不知道状态变了——这就是为什么订阅是连接“状态更新”和“视图更新”的关键。

http://www.hskmm.com/?act=detail&tid=12092

相关文章:

  • 20250921 模拟赛 T4 题解
  • 1.3 课前问题列表
  • NOIP 模拟赛十一
  • Proxy 库解析(四)
  • warm-flow 监听器对象获取问题
  • Hexo Butterfly 5.4 分页问题 YAML 错误 解决方法总结
  • js逆向:某Q音乐平台请求数据模拟生成
  • maven
  • 第十一届中国大学生程序设计竞赛网络预选赛(CCPC Online 2025)
  • 网络流
  • 完整教程:数据结构 栈和队列、树
  • 深入解析:【ubuntu】ubuntu中找不到串口设备问题排查
  • 酵母双杂交技术:高通量筛选的突破与不可忽视的三大局限性
  • ubuntu20.04测试cuda
  • Android Studio 配置国内源
  • PyCharm项目上传GitHub仓库(笔记) - 教程
  • 从RAG出发
  • 软件工程第二次作业——第一次个人编程作业
  • Ubuntu 24.04 安装 DaVinci Resolve
  • Promise中处理请求超时问题
  • 图解26:老生常谈的OSI网络模型
  • 【C++】指针
  • AI驱动建筑行业数字化转型
  • 详细介绍:前端学习——CSS
  • VSCode 把代码发送到激活状态下的终端
  • 线性结构之数组[基于郝斌课程]
  • 完整教程:Vue中的props方式
  • 图解25:MySQL主从复制原理
  • 用 Go 编写验证码识别脚本(基于 Tesseract)
  • 软工第二次作业