Lesson 35 动手实现 Redux(六):Redux 总结
发布日期:2022-09-10 03:04:08 浏览次数:2 分类:技术文章

本文共 1119 字,大约阅读时间需要 3 分钟。

Lesson 35 动手实现 Redux(六):Redux 总结

不知不觉地,到这里大家不仅仅已经掌握了 Redux,而且还自己动手写了一个 Redux。我们从一个非常原始的代码开始,不停地在发现问题、解决问题、优化代码的过程中进行推演,最后把 Redux 模式自己总结出来了。这就是所谓的 Redux 模式,我们再来回顾一下这几节我们到底干了什么事情。

我们从一个简单的例子的代码中发现了共享的状态如果可以被任意修改的话,那么程序的行为将非常不可预料,所以我们提高了修改数据的门槛:你必须通过 dispatch 执行某些允许的修改操作,而且必须大张旗鼓的在 action 里面声明。

这种模式挺好用的,我们就把它抽象出来一个 createStore,它可以产生 store,里面包含 getStatedispatch 函数,方便我们使用。

后来发现每次修改数据都需要手动重新渲染非常麻烦,我们希望自动重新渲染视图。所以后来加入了订阅者模式,可以通过 store.subscribe 订阅数据修改事件,每次数据更新的时候自动重新渲染视图。

接下来我们发现了原来的“重新渲染视图”有比较严重的性能问题,我们引入了“共享结构的对象”来帮我们解决问题,这样就可以在每个渲染函数的开头进行简单的判断避免没有被修改过的数据重新渲染。

我们优化了 stateChangerreducer,定义了 reducer 只能是纯函数,功能就是负责初始 state,和根据 stateaction 计算具有共享结构的新的 state

createStore 现在可以直接拿来用了,套路就是:

// 定一个 reducerfunction reducer (state, action) {
/* 初始化 state 和 switch case */}// 生成 storeconst store = createStore(reducer)// 监听数据变化重新渲染页面store.subscribe(() => renderApp(store.getState()))// 首次渲染页面renderApp(store.getState()) // 后面可以随意 dispatch 了,页面自动更新store.dispatch(...)

现在的代码跟 React.js 一点关系都没有,接下来我们要把 React.js 和 Redux 结合起来,用 Redux 模式帮助管理 React.js 的应用状态。

当前内容版权归 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请点击 .

最初的起点:

上一篇:

下一篇:

转载地址:https://blog.csdn.net/Mr_zzr/article/details/125797711 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Lesson 36 动手实现 React-redux(一):初始化工程
下一篇:Lesson 34 动手实现 Redux(五):不要问为什么的 reducer

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月24日 07时40分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

spring boot 与 Ant Design of Vue 实现组织管理布局的实现(二十二) 2019-04-27
spring boot 与 Ant Design of Vue 实现左侧组织树(二十三) 2019-04-27
spring boot 与 Ant Design of Vue 实现新增组织(二十四) 2019-04-27
spring boot 与 Ant Design of Vue 实现修改组织(二十五) 2019-04-27
spring boot 与 Ant Design of Vue 实现删除组织(二十六) 2019-04-27
spring boot 与 Ant Design of Vue 实现获取用户列表(二十七) 2019-04-27
spring boot 与 Ant Design of Vue 实现新增用户(二十八) 2019-04-27
spring boot 与 Ant Design of Vue 实现修改用户(二十九) 2019-04-27
spring boot 与 Ant Design of Vue 实现删除用户(三十) 2019-04-27
spring boot 与 Ant Design of Vue 鉴权体系登录的实现(三十一) 2019-04-27
spring boot 与 Ant Design of Vue 鉴权体系获取用户信息的实现(三十二) 2021-06-30
Druid连接池实现自定义场景的多数据库的连接 2021-06-30
CentOs7命令行(静默)的方式安装oracle数据库 2021-06-30
基于VMware安装CentOs7的镜像 2021-06-30
PL/SQL数据库管理工具的使用 2021-06-30
史上最简单的spring-boot集成websocket的实现方式 2021-06-30
带你玩转属于自己的spring-boot-starter系列(一) 2021-06-30
带你玩转属于自己自己的spring-boot-starter系列(二) 2021-06-30
带你玩转属于自己的spring-boot-starter系列(三) 2021-06-30
基于SnowFlake算法如何让分库分表中不同的ID落在同一个库的算法的实现 2021-06-30