首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

redux中的Reducer开始显得多余了--有没有更好的方式将它们结合起来?

在Redux中,Reducer的作用是根据不同的action类型来更新应用的状态。然而,随着应用规模的增长,Reducer的数量可能会变得庞大且难以维护,这时候可以考虑使用Redux中间件来优化代码结构。

Redux中间件是一个位于action被发起和reducer之间的拦截器,它可以在处理action之前或之后执行自定义的逻辑。通过使用中间件,我们可以将一些通用的逻辑从Reducer中抽离出来,使得Reducer只关注状态的更新。

常用的Redux中间件有redux-thunk、redux-saga和redux-observable等。这些中间件可以帮助我们处理异步操作、副作用以及复杂的业务逻辑。

  • redux-thunk是Redux官方推荐的中间件,它允许我们在action中编写异步的逻辑。通过返回一个函数而不是一个普通的action对象,我们可以在函数中进行异步操作,并在操作完成后再dispatch一个真正的action。这样可以方便地处理异步请求、延迟操作等场景。腾讯云相关产品推荐:云函数SCF(https://cloud.tencent.com/product/scf
  • redux-saga是一个强大的Redux中间件,它使用了ES6的Generator函数来处理异步操作。通过创建saga,我们可以将复杂的异步流程以及副作用与Redux的action和reducer分离开来,使得代码更加清晰可读。腾讯云相关产品推荐:Serverless Framework(https://cloud.tencent.com/product/sls
  • redux-observable是基于RxJS的Redux中间件,它使用Observable来处理异步操作。通过使用Observable的强大功能,我们可以轻松地处理异步流、事件组合等复杂的业务逻辑。腾讯云相关产品推荐:消息队列CMQ(https://cloud.tencent.com/product/cmq

除了上述中间件,还有其他一些第三方中间件可以根据具体需求选择使用,例如redux-logger用于打印action和state的日志、redux-persist用于持久化存储等。

总结来说,通过使用Redux中间件,我们可以更好地组织和管理应用的状态更新逻辑,使得Reducer不再显得多余。不同的中间件适用于不同的场景,可以根据具体需求选择合适的中间件来优化代码结构和提升开发效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

react项目架构之路初探

如果采用传统开发方式,mvc架构不明确,页面(view)和逻辑层(controller)紧耦合,代码逻辑重复性工作较多,使用更改state方式 去渲染页面, 如果遇到组件之间传值,数据流通不明确...redux 三大原则:单一数据源,只读state,使用纯函数来修改 redux是一款 状态管理库,并且提供react-redux来与react紧密结合,核心部分为Store,Action,Reducer...(dispatch,getState),在函数体内进行业务逻辑封装 redux-thunk缺点: action形式不统一 ,异步操作太分散,分散在各个action redux-saga本质是一个可以自执行...声明mumation方式 我们使用了reduxsauce插件 更好标识不同action 同时 使用Immutable 插件 1....解决 共享数据可变状态 2. 实现时间旅行功能 (对比与git提交) 3.

2.4K10

单向数据流-从共享状态管理:fluxreduxvuex漫谈异步数据处理

redux与flux对比 Flux Store 是各自为战,每个 Store 只对对应 View 负责,每次更新都只通知对应View Redux 各子 Reducer 都是由根 Reducer...——React利用React-Redux将它与React框架结合起来。...我们action越来越复杂,payload越来越长,当然我们可以分离开来单独建立文件去处理逻辑,但是实质上还是对reduxaction和reducer进行了污染,让它们变得不纯粹,action就应该作为一个信号...,而不是处理逻辑,reducer里面处理要好一些,但是同样会生出几个多余action类型进行处理,而且也只能是promise,不能做复杂业务处理。...React-Redux vs VUEX 对比分析 和组件结合方式差异 通过VUEX全局插件使用,结合store传入根实例过程,就可以使得store对象在运行时存在于任何vue组件

3.6K40

【React】211- 2019 React Redux 完全指南

怎么把这些全都与 React 结合起来构建一个可运行应用? 你可以花几个小时阅读博客以及尝试从复杂“真实世界”应用研习以将它拼凑起来。...在本篇 Redux 教程,我会渐进地解释如何 Redux 与 React 搭配使用 —— 从简单 React 开始 —— 以及一个非常简单 React + Redux 案例。...它也会教你更多关于函数式编程知识。 内置 Redux 替代品 如果 Redux 对你来说太过繁琐,可以看看这些替代品。它们内置在 React 。...学习 Redux,从简单 React 开始 我们采用增量方法,从带有组件 state 简单 React 应用开始,一点点添加 Redux,以及解决过程遇到错误。...你可以把它想成一个游戏,你唯一能做事就是 return { … }。这是个有趣游戏。开始会有点恼人。但是通过练习你会变得更好

4.2K20

深入理解Redux数据更新机制:数据流管理核心原理

Redux作为一个流行状态管理库,提供一种简洁而强大数据更新机制,成为了许多开发者首选。 本文深入探讨Redux数据更新机制,帮助读者更好地理解Redux工作原理并应用于实际项目中。...Redux是一个非常流行JavaScript状态管理库,它可以帮助我们更好地组织和管理React应用程序数据流。本文介绍Redux数据更新机制,并讨论如何使用它来管理应用程序状态。...Redux数据流是单向,从store开始,通过dispatch一个action来触发数据更新,然后通过reducer来更新store数据。...是两个可选参数,它们分别用于指定将Redux状态映射到组件属性上,以及Redux动作映射到组件属性上。...dispatch 是 Redux Store 一个方法,用于分发动作。在 mapDispatchToProps ,我们可以动作包装成回调函数或者直接将它们分发到 Redux

35440

【offer 收割计划】你知道为什么 reducer 最好是一个纯函数吗?

首先如果 redux reducer 如果不是一个 纯函数的话会造成什么后果呢?...,来看看它到底是什么原因造成Redux 接收一个 state 对象,然后通过 for 循环, state 每一部分传递给对于 reducer ,如果发生任何改变, reducer 返回一个新对象...原因是,如果这里采用了深比较方式,当比较次数很多时,性能消耗特别大,因此 reduxreducer 做了一个规定,无论发生什么变化时,都需要返回一个新对象;没有变化时,返回旧对象。...这样就能继续沿用浅比较方式,很好减少了性能损耗 同时在 redux 英文官网给 reducers 定制一套规则:对应地址 We said earlier that reducers must...state 总结 通过这几道面试题,我们复习 JavaScript 循环语句,也区分了 splice 和 slice 而又深入理解 redux reducer 工作原理,这对我自己来说提升还是很大

99420

医疗数字阅片-医学影像-Module: Panel-自定义面板-中二-Redux&react-redux状态管理详解

而 React-redux 就是把 Redux 这种架构模式和 React.js 结合起来一个库,就是 Redux 架构在 React.js 体现。...Action 处理 现在我们已经确定 state 对象结构,就可以开始开发 reducerreducer 就是一个纯函数,接收旧 state 和 action,返回新 state。...明白这些之后,就可以开始编写 reducer,并让它来处理之前定义过 action。 我们将以指定 state 初始状态作为开始。...主 reducer 并不需要设置初始化时完整 state。初始时,如果传入 undefined, 子 reducer 负责返回它们默认值。...随着应用膨胀,我们还可以拆分后 reducer 放到不同文件, 以保持其独立性并用于专门处理不同数据域。

3.5K10

【干货】从零实现 react-redux

前面我们也介绍过 React 组件通信,在大型应用,处理好 React 组件通信和状态管理就显得非常重要。...在开始前,我已经这篇文章完整代码都整理到 GitHub 上,大家可以参考一下。 Redux:simple-redux React-redux:simple-react-redux 2....以 Vue 为例子,在刚开始时候,Vue 官网首页写卖点是数据驱动、组件化、MVVM 等等(现在首页已经改版)。那么数据驱动意思是什么呢?...subscribe 则是一个监听方法,它可以监听到 store 变化,所以可以通过 subscribe Redux 和其他框架结合起来。...所以 dispatch 做事情就是 action 传给 reducer 函数,执行后结果设置为新 store,然后执行 listeners 方法。

1.7K10

【React】717- 从零实现 React-Redux

前面我们也介绍过 React 组件通信,在大型应用,处理好 React 组件通信和状态管理就显得非常重要。...在开始前,我已经这篇文章完整代码都整理到 GitHub 上,大家可以参考一下。 Redux:simple-redux React-redux:simple-react-redux 2....以 Vue 为例子,在刚开始时候,Vue 官网首页写卖点是数据驱动、组件化、MVVM 等等(现在首页已经改版)。那么数据驱动意思是什么呢?...subscribe 则是一个监听方法,它可以监听到 store 变化,所以可以通过 subscribe Redux 和其他框架结合起来。...所以 dispatch 做事情就是 action 传给 reducer 函数,执行后结果设置为新 store,然后执行 listeners 方法。

1.2K10

优雅地乱玩 Redux-1-Getting Started

Reducer接收Action 3. Root Reducer会将所有sub reducer结果给结合起来并返回 4....Redux会保存最后结合起来State并且调用各个监听器 Key Concepts Reducer 关于多个同级Reducer Store 个人笔记, 基于官方英文教程, 添加了一些批注...Root Reducer 会将所有 sub reducer 结果给结合起来并返回 参考下文提到combineReducers()使用示例 4....Redux 会保存最后结合起来 State 并且调用各个监听器 现在这个时候已经获取到了下一个状态 如果我使用store.subscribe(listener)注册个监听器,会在这个时候被调用...状态变化请求提交给 reducer 来处理, reducer 仅仅返回下一个状态 pure function: 可以根据传入值预测结果,并且不会影响其他值, 即不改变传入值也不会创建闭包

21220

深入理解redux

前沿 在使用 react 过程,通常我们会通过 props 父组件一些数据传递到子组件,兄弟组件传递数据通过一个共同父级,子传父可以通过回调函数来进行传递,当然这都是比较理想情况,业务往往不可能仅仅这样简单...值会不断叠加 一般 context 应用场景是在主题颜色、当前登陆账户信息、路由等 既然 context 存在这样那样问题,那有没有好一点方式呢?...小型应用很容易被这个复杂化设计提升项目本身难度,最主要一点,业界已经有较好方式,弥补了这些不足,比如我们要说 redux,还有较好 mobx,它们更简单,高效,易学习 Redux 既然 redux...,有 reducer,我们需要创建一个 store,方式也很简单,通过 redux 提供 createStore 进行创建,然后通过 subscribe 进行订阅,当 store 数据发生变化时候就会触发订阅回调函数...给你提供立即可用 applyMiddleware 直接组合你中间件 react-redux redux,要把 react 和 redux 进行较好结合,就像刚开始提到,如果仅仅是数据传递

66550

redux、mobx、concent特性大比拼, 看后生如何对局前辈

,本文主要说和react搭配使用对比效果,所以下文里提到redux、mobx暗含了react-redux、mobx-react这些让它们能够在react中发挥功能绑定库,而concent本身是为了...[gdi5irk56l.png] 介绍完三者背景,我们舞台正式交给它们开始一轮轮角逐,看谁到最后会是你最中意范儿?...里一个reducer块,聚合数据、衍生数据、修改行为),mobxstore获取方式有多种,例如在需要用地方直接引入放到成员变量上 import someStore from 'models/foo...但是由于concent提供setup接口,我们可以利用它只会在初始渲染前执行一次能力,这些动作函数放置到setup内部定义为静态函数,避免重复定义,所以一个更好函数组件应为 import * as...但是redux存在一个问题是,如果视图里某一刻已经不再使用某个状态,它不该被渲染却被渲染,mobx携带得基于运行时获取到ui对数据最小订阅子集理念优雅解决这个问题,但是concent更近一步依赖收集行为隐藏更优雅

4.5K61

数据流管理方案 | Redux 和 MobX 哪个更好

假如父组件传递给子组件是一个绑定自身上下文函数,那么子组件在调用该函数时,就可以想要交给父组件数据以函数入参形式给出去,以此来间接地实现数据从子组件到父组件流动。 ?...Provider 作为数据提供方,可以数据下发给自身组件树任意层级 Consumer。 注意:Cosumer 不仅能够读取到 Provider 下发数据,还能读取到这些数据后续更新。...我们先来看看它们各自代表什么: store:就好比饮水机里“水”,它是一个单一数据源,而且是只读。 action:人如其名,是 “动作” 意思,它是对变化描述。...使用 createStore 来完成 store 对象创建。 ? createStore 方法是一切开始,它接收三个入参:reducer、初始状态内容、指定中间件。...一般来说,只有 reducer 是你不得不传。下面我们就看看 reducer 编码形态是什么样。 2. reducer 作用是 state 返回给 store。

1.9K21

手写一个Redux,深入理解其原理

有时候我们过于关注使用,只记住了各种使用方式,反而忽略他们核心原理,但是如果我们想真正提高技术,最好还是一个一个搞清楚,比如Redux和React-Redux看起来很像,但是他们核心理念和关注点是不同...,Redux其实只是一个单纯状态管理库,没有任何界面相关东西,React-Redux关注是怎么Redux跟React结合起来,用到了一些ReactAPI。...本身就是一个单纯状态机,Store存放了所有的状态,Action是一个改变状态通知,Reducer接收到通知就更改Store对应状态。...核心功能,所以我们手写第一个目标就是替换这个例子Redux。...比如我们最开始那个牛奶仓库,由于我们业务发展很好,我们又增加了一个放大米仓库,我们可以为这两个仓库创建自己reducer,然后将他们组合起来,使用方法如下: import { createStore

47741

翻译 | Thingking in Redux(如果你只了解MVC)

一旦你开始学习React-Natvie(或React),在有人向你提及Redux之前,你大概只落后3个stack overflow问题,或者medium.com上几篇博客距离。 你当然很高兴。...你开始理解state和props区别了,你知道componentDidMount是干啥,你甚至懂得了怎样合理地创建一个可复用组件。...注意我们是如何value传入。这么做是因为reducer已经持有该value值。 另外,这里也没有payload。这么做原因是因为reducer并不需要。...在mapDispatchToProps函数,我们action处理函数映射到我们容器,这样我们就能将它们传入到展示组件中去了。...是react-reduxconnect函数神奇实现这些功能。

1.3K100

「前端架构」Redux vs.MobX权威指南

在这篇文章,我们研究每个库以及它们是如何匹配。 本文假设您对web应用程序状态管理工作有一个基本了解。普通JavaScript和Redux框架都适用于普通或不可知框架。...另外,MobX中有很多事情是在幕后完成,为开发人员创造更好学习体验。您不必担心状态规范化或实现类似Thunks概念。由于已经内置抽象,因此编写代码更少。...以这种方式分离存储区好处是,您也可以在其他应用程序重用该域。UI存储特定于当前应用程序。 获奖者:Redux 这个类别的赢家是主观;这取决于开发者偏好。...如果您有兴趣了解更多关于纯函数以及它们Redux如何操作信息,您可以阅读本文以获得更好理解。这是Redux最好特性之一。...Redux附带了reduxdev工具,供成千上万开发人员使用。它为调试Redux代码提供惊人支持。 MobX还提供开发人员工具,但它们没有Redux提供相同质量调试支持。

1.5K30

彻底让你理解redux

从一开始我们就说明下一个概念: reducer决定state最终格式。 reducer是一个纯函数,也就是说,只要传入参数相同,返回计算得到下一个 state 就一定相同。...combineReducers() 所做只是生成一个函数,这个函数来调用你一系列 reducer,每个 reducer 根据它们 key 来筛选出 state 一部分数据并处理, 然后这个生成函数再将所有...react-redux组建分成了两大类,UI组建和容器组建。...说白,这个口,就是connect,而redux所有的组件都是在罐子外面的。...不知道这么通俗解释有没有说明白 (T_T) 所以这样看来,组件通过container包装以后和redux就可以说是完全隔绝了,组件就是做组件事情,redux就是做redux事情。

49510

俺好像看懂了公司前端代码

起初想法,Vue有自己单独状态管理器Vuex,React也可以用Redux来管理状态;Vue提供混入(mixins)开发方式,虽然React起初也有混入功能,后来被舍弃掉了,但是React可以通过高阶组件来实现混入功能...而在Redux主要有Reducer和Action,Reducer是一个纯函数,根据不同Action返回不同状态,Action则是用于改变状态唯一途径。...最后生成reducers交给redux管理,actions则为组件提供调用。actions函数里面有三步,包括请求前,请求中和请求后对状态处理。...vuex里面有四个辅助函数这个react-redux要登场。react-redux提供一个connect,它是一个高阶组件,接收 React 组件作为输入,输出一个新 React 组件。...我们这里需要自己封装一个高阶组件,里面调用react-redux提供connect函数state和dispatch映射到组件props,此外还需要定义两个函数映射到props,一个是用于调用接口函数

1.3K10
领券