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

在Redux中,在单个操作中分派多个reducers和cases是否是一种好的做法?

在Redux中,在单个操作中分派多个reducers和cases并不是一种好的做法。Redux是一个用于管理应用状态的JavaScript库,它通过使用单一的store和纯函数的reducers来实现状态的可预测性和可维护性。

在Redux中,reducers负责处理特定的action,并根据action的类型更新相应的state。每个reducer都应该是一个纯函数,接收当前的state和action作为参数,并返回一个新的state。这种设计使得reducers可以独立于彼此工作,并且易于测试和维护。

当在单个操作中分派多个reducers和cases时,会导致代码的复杂性增加,降低代码的可读性和可维护性。这样的做法可能会导致reducers之间的耦合性增加,使得代码难以理解和调试。同时,这也违背了Redux的设计原则,即每个reducer应该只处理特定的action类型。

相反,应该将每个reducer专注于处理特定的action类型,并将它们组合在一起以构建整个应用的状态树。这可以通过使用Redux提供的combineReducers函数来实现。combineReducers函数接收一个对象,其中包含各个reducer函数,并返回一个新的reducer函数,该函数将调用每个子reducer,并将它们的结果合并成一个新的state对象。

总结起来,为了保持代码的简洁性、可读性和可维护性,在Redux中,应该避免在单个操作中分派多个reducers和cases。相反,应该将每个reducer专注于处理特定的action类型,并使用combineReducers函数将它们组合在一起。这样可以确保代码的清晰性和可预测性,提高开发效率。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动推送、移动分析、移动测试等):https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rematch: Redux 重新设计

本文中,我们将探讨一些你可能一直问自己问题: 你是否需要一个用于状态管理库? Redux 受欢迎程度是否值得我们去使用? 为什么或者为什么不值得? 我们能否制定更好状态管理解决方案吗?...让我们看看使用React等基于组件视图框架/库时选项: 1. Component State (组件状态) 存在于单个组件内部状态。React,通过setState方法更新state。...为什么使用 Redux 表层之下,Redux 与 TJ 根对象{}完全相同——只是包装在了一系列实用工具管道(pipeline) Redux ,不能直接修改状态。...简化 reducers Redux reducers 可以通过一个转换,让我们远离已经习惯但不必要且冗长 switch 语句。...改变其中一个又是否会影响到另一个? action creator reducer 同一枚硬币两面。

1.5K50

【THE LAST TIME】从 Redux 源码中学习它范式

也是给自己查缺补漏技术分享。 前言 「范式」概念库恩范式理论核心,而范式从本质上讲一种理论体系。库恩指出:「按既定用法,范式就是一种公认模型或模式」。...上篇:从 Redux 设计理念到源码分析 本文续上篇,接着看 combineReducers、applyMiddleware compose 设计与源码实现 至于手写,其实也是非常简单,说白了,「去掉源码严谨校验...combineReducers 从上一篇我们知道,newState dispatch 函数,通过 currentReducer(currentState,action)拿到。...其实即使我们上面手写 reverse 部分。 reduce es5 数组方法了,对累加器和数组每个元素(从左到右)应用一个函数,将其减少为单个值。...总结 所以回头看看,redux 其实就这么些东西,第一篇算是 redux 核心,关于状态管理思想方式。第二篇可以理解为 redux 自带一些小生态。全部代码不过两三百行。

37230

ReactRedux

Reducer拆分 这里我们以redux中文文档 todo应用为例来说明,应用需求,有添加todo项,设置todo列表过滤条件等多个action,同理我们就需要写多个reducer来描述状态怎么改变...传入Store 所有容器组件都可以访问 Redux store,所以可以手动监听它。一种方式把它以 props 形式传入到所有容器组件。...状态(state) 一种数据结构,存储store数据 异步加载页面的状态:“加载;加载成功,展示列表;加载失败” 这三种状态。...事件 列表展示过程数据,也就是:“开始加载;加载成功;加载失败”这三个事件。其实整个过程之前使用promise来实现异步操作一样。...异步操作这块,我们建议使用 redux-saga 中间件来创建更加复杂异步 action。其中涉及到es6Generators可以文档查看。

4K20

这样 React 实践 TDD 编程

Redux编写测试听起来肯定有悖直觉。如果你使用了Redux,它可能看起来更加复杂。 然而,添加功能之前编写测试有助于编写更好代码,因为你预先考虑了将使用设计模式、体系结构变量名称。..., }); 编写 userSlice “slice”应用程序单个特性Redux reducer逻辑动作集合,通常定义单个文件。...userSlice将有actionsreducer来执行CRUD操作。 slice默认状态应该是一个空数组,毕竟,我们处理用户。...我们还没有定义userSlice、reducer初始状态。 slice目录,创建一个名为user.js文件。...thunk一个函数,它以storedispatch方法作为参数,然后API或副作用完成后使用它来dispatch同步操作。 首先,让我们为这个特性编写测试。

1.9K30

redux 文档到底说了什么(下)

因此这里隆重介绍 redux 一直推荐 redux-toolkit,这是官方提供一揽子工具,这些工具并不能带来很多功能,只是将上面的手动档都变成自动档了。...createStore 对比一下,configureStore 带来好处直接内置了 redux-thunk redux-devtools-extension,这个 devtools 只要将 devTools...等等方法,这些 API 用起来就和用 Sequlize 这个库来操作数据库没什么区别,不足地方 payload 一定要按照它规定格式,如 updateOne payload 类型就得这样...网上有些声音讨论该用 createAction + createReducer 还是直接上 createSlice 。如果分不清哪个,那就用 createSlice。...市面上还有很多诸如 redux-action, redux-promise, reduce-reducers等等 redux 衍生品(redux 都快变一个 IP 了)。

74520

Redux(一):基本概念

如果能将这些状态从单个组件剥离出来统一管理,将会更好维护、拓展Web应用。 Redux就是JavaScript应用这样一个可预测化状态管理容器。...随着应用规模增长,所要维护state树会变很大,这样就需要把reducers拆分成多个reducer,每个reducer来维护状态树一部分。...3、创建一个store redux应该只有一个store,单一数据源,这一点很重要。redux向外暴露了一个createStore方法用来创建store。...例子,无论对象还是数组,并没有直接去修改属性会增加元素,返回都是一个新对象或数组,这一点很重要,因为js对象是按地址引用,直接修改属性或push一个元素,引用地址并没有发生变化,这会导致出现一些难以控制情况...意思就是:不能在一个已经卸载组件上执行更新state操作,这会导致内存泄漏, 应该在componentWillUnmount生命周期中取消所有订阅异步任务。

1.3K10

Redux框架之combineReducers() 用法讲解

combineReducers 辅助函数作用是,把一个由多个不同 reducer 函数作为 value object,合并成一个最终 reducer 函数,然后就可以对这个 reducer 调用...合并后 reducer 可以调用各个子 reducer,并把它们结果合并成一个 state 对象。state 对象结构由传入多个 reducer key 决定。...通常做法命名 reducer,然后 state 再去分割那些信息,因此你可以使用 ES6 简写方法:combineReducers({ counter, todos })。...这一点造成了很多疑问, 因此现在建议 reducers/index.js 里使用 combineReducers() 来对外输出一个 reducer。 下面有示例说明。...使用 ES6 默认参数值语法来设置初始 state 很容易,但你也可以手动检查第一个参数是否为 undefined。

50320

应用connected-react-routerredux-thunk打通react路由孤立

Redux 负责组织 state 工具,但你也要考虑它是否适合你情况。...在下面的场景,引入 Redux 比较明智: 你有着相当大量、随时间变化数据 你 state 需要有一个单一可靠数据来源 你觉得把所有 state 放在最顶层组件已经无法满足需要了 的确,这些场景很主观笼统...state 组件自身 props 计算得到新 props,注入该组件,并且可以通过监听 store,比较计算出新 props 判断是否需要更新组件。...同步操作只要发出一种 Action 即可,但是异步操作需要发出三种 Acion。...返回函数参数dispatchgetState这两个 Redux 方法,普通 Action Creator 参数 Action 内容。

2.3K00

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

Redux 一种架构模式(Flux 架构一种变种),它不关注你到底用什么库,你可以把它应用到 React Vue,甚至跟 jQuery 结合都没有问题。...而 React-redux 就是把 Redux 这种架构模式 React.js 结合起来一个库,就是 Redux 架构 React.js 体现。...对React、Redux、React-Redux详细剖析 Redux Redux一种架构模式,由flux发展而来。...很不幸到现在为止,还有很多人存在一个误区:根据文档是否使用 switch 来决定是否使用它。...todo.completed }) } return todo }) }) 我们需要修改数组中指定数据项而又不希望导致突变, 因此我们做法创建一个新数组后

3.5K10

从应用到源码-深入浅出Redux

引言 大家,这是一篇没有任何注水 Redux 从入门到精通源码解读文章。 文章每一行代码都是笔者深思熟虑敲下,欢迎对 Redux 感兴趣同学共同讨论。 文章篇幅较长,建议收藏逐步阅读。...需要额外注意 redux 要求每个 reducer 函数匹配到对应 action 时需要返回一个全新对象(两个对象拥有完全不同内存空间地址)。...需要留意一点通过 dispatch 触发 action 时多个 reducer 之间我刻意使用了流通这个关键字有原因,我们会在稍微详细解释到。...同时 applyMiddleware 内部提供了一种可组合机制,多个 middleware 可以通过 applyMiddleware 组合到一起使用。... Redux 中集成了所谓 compose 方法,它作用非常简单从右到左来组合多个函数。

1.3K10

用动画实战打开 React Hooks(三):useReducer useContext

之前两篇教程,我们可以说和 useState 并肩作战了很久,我们非常“熟悉”老朋友了。但是回过头来,我们真的足够了解它吗?...根组件中集成 最后,我们调整根组件,把之前实现历史趋势图修改后 CountriesChart 集成到应用。...而 Redux 核心思想之一就是将状态放到唯一全局对象(一般称为 Store),而修改状态则是调用对应 Reducer 函数去更新 Store 状态,大概就像这样: 上面这个动画描述组件...: number; } } 根组件定义 Reducer Dispatch Context 这一次我们按照自顶向下顺序,先在根组件 App 配置所有需要 Reducer 以及 Dispatch...反观 Redux,它核心思想就是将状态修改状态操作全部集中起来进行。 有没有发现,这其实刚好对应了两种管理学思想 Context Control?

1.4K30

必须要会 50 个React 面试题(下)

什么高阶组件(HOC)? 高阶组件重用组件逻辑高级方法,一种源于 React 组件模式。 HOC 自定义组件,它之内包含另一个组件。...flux Flux 一种强制单向数据流架构模式。它控制派生数据,并使用具有所有数据权限中心 store 实现多个组件之间通信。整个应用数据更新必须只能在此处进行。...使用 Redux 开发应用易于测试,可以不同环境运行,并显示一致行为。 37. Redux遵循三个原则是什么? 单一事实来源:整个应用状态存储单个 store 对象/状态树里。...它根据操作类型确定需要执行哪种更新,然后返回新值。如果不需要完成任务,它会返回原来状态。 43. Store Redux 意义是什么?...虽然 用于封装 Router 多个路由,当你想要仅显示要在多个定义路线呈现单个路线时,可以使用 “switch” 关键字。

3.5K21

Redux 包教包会(二):趁热打铁,重拾初心

保存上述修改代码,打开浏览器,你应该又可以点击单个待办事项来完成重做它了: ?...Reducers Redux 实际上用来处理 Store 存储 State 某个部分,一个 Reducer State 对象树某个属性一一对应,一个 Reducer 负责处理 State...Redux 为我们提供了 combineReducers API,用来组合多个 reducer,我们 src/reducers 文件夹下创建 index.js 文件,并在里面添加如下内容: import...我们在这一系列教程首先提出了 Redux 三大概念:Store,Action,Reducers: •Store 用来保存整个应用状态,这个状态一个被称之为 State JavaScript...,到时候各种状态属性操作夹杂在一起很容易造成混乱降低代码可读性,不利于维护,因此我们提出了 combineReducers 方法,用于切分 rootReducer 到多个分散不同文件保存着单一状态属性

2.3K40

Flux --> Redux --> Redux React 基础实例教程

Flux Flux一种概念思想,或者说是一种应用架构 根据它概念,一个应用数据流动应是单向,且应用所有数据保存在一个位置,数据变化时保证视图也同步变化,保证了数据视图状态一一对应起来...什么时候用Redux Redux说简单简单,因为也就几个API,理解概念就好用了;说复杂也复杂,因为它将一个应用分成了不同部分(action、处理action、store数据等),正规项目中推荐将各部分区分到不同文件...开始用Redux 上面讲了那么多字,还是看代码来得实在 这里先纯粹讲Redux,毕竟它React没啥关系 首先是环境配置,基本上都会使用ES6,所以Babel支持必须 然后Redux支持...4.7 多个React组件使用 上面说单个React组件使用,实际使用中会有多个组件 多个组件使用类似单个,只不过需要注意两点 只能包含一个父级 mapStateToProps...4.7.8 React-Redux中使用异步 因Redux操作执行同步,如果要实现异步,比如某个操作用来发个异步请求获取数据,就得引入中间件来处理这种特殊操作 即这个操作不再普通值,而是一个函数

3.6K20

redux原理分析

前言相信很多人都在使用redux作为前端状态管理库进去项目开发,但仍然停留在“知道怎么用,但仍然不知道其核心原理”阶段,接下来带大家分析一下reduxreact-redux两个库核心思想API。...4.subscribe为store订阅监听函数,这些订阅后监听函数每一次dipatch发起后依次执行 5.可以添加中间件对提交dispatch进行重写3.reduxapi有哪些?...合并多个reducers 4.applyMiddleware 洋葱模型中间件,介于dispatchaction之间,重写dispatch 5.compose 整合多个中间件 接下来我们来依次实现...上下文中,contextreact组件特有的一种不用手动一层层传递props就能在组件树传递数据方式,这样就实现了store相对于react组件全局化,所有组件都能对store进行修改,获取,监听了...connect组件接受一个component组件返回一个新component组件,connect最终返回组件获取store并将store设置为当前组件state,并且connect返回组件

73420

React Native+React Navigation+Redux开发实用教程

触发action有两种方式: 一种通过mapDispatchToProps将dispatch创建函数props绑定,这样就可以通过this.props.onThemeChange('#096')调用这个...dispatch创建函数来触发onThemeChange action了; 另外一种方式通过this.propsnavigation来获取dispatch,然后通过这个dispatch手动触发一个...Redux+react-navigation场景处理 Android 物理返回键 Redux+react-navigation场景处理Android物理返回键需要注意当前路由所以位置,...+Redux打造高质量上线App获取; 问答 Redux如何实现JS可预测状态管理?...当需要拆分数据处理逻辑时,你应该使用 reducer 组合 而不是创建多个 store; redux一个特点:状态共享,所有的状态都放在一个store,任何component都可以订阅store数据

3.9K10

Taro 小程序开发大型实战(四):使用 Hooks 版 Redux 实现应用状态管理(上篇)

Footer 组件内 FloatLayout 弹窗组件,像这种涉及到多个子组件进行通信,我们将状态保存到公共父组件方式 React 叫做 ”状态提升“。...中间件 redux-logger 外,还有两个额外包,这是因为 Taro Redux 原绑定库 react-redux 被替换成了 @tarojs/redux @tarojs/redux-h5...•Action:发起修改 Store 中保存状态动作,修改状态唯一手段。•Reducers:一个个纯函数,用于响应 Action,对 Store 状态进行修改。...,复习了一下 Redux 概念之后,我们马上来创建 Store,Redux 最佳实践推荐我们将 Store 保存在 store 文件夹,我们 src 文件夹下面创建 store 文件夹,并在其中创建.../post' 组合 User Post Reducer 我们之前将整个全局响应逻辑分别拆分到了 src/reducers/user.js src/reducers/post.js ,这使得我们可以把响应逻辑拆分到很多个很小函数单元

2K21

像数据库一样设计你 redux 数据结构

使用索引可以从多个维度表现数据。 最近我RC聊天系统浏览关于 JavaScript 一些讨论时,注意到了Kate Ray一个问题: 应该怎样 redux 存储结构化我数据?...我在实践得到了一些经验,通常在访问时间迭代难易程度之间做一些权衡。 一些常见方法 如果你需要存储一些每个项目都带有id数据,可以使用Array, Object, 或者 对象数组来保存。...数组对象[{values}]: 这是最常见一种范式。它使迭代变得容易,但是不经过迭代过滤就不能快速访问特定条目。....]},] 把它像数据库一样构造成由id对行进行索引结构 在学习redux过程,我Monadical偶然发现了一种不同方法,它使我们受益于简单Object.values(state.categories...在后端很容易做到这一点,因为你很可能从数据库中提取数据,而数据库已经存在id字段,可以直接将其作为键使用。 索引力量 请注意,我们上面介绍结构只是一些行索引,索引id。

1.3K20

redux原理是什么

前言相信很多人都在使用redux作为前端状态管理库进去项目开发,但仍然停留在“知道怎么用,但仍然不知道其核心原理”阶段,接下来带大家分析一下reduxreact-redux两个库核心思想APIredux1...4.subscribe为store订阅监听函数,这些订阅后监听函数每一次dipatch发起后依次执行 5.可以添加中间件对提交dispatch进行重写3.reduxapi有哪些?...合并多个reducers 4.applyMiddleware 洋葱模型中间件,介于dispatchaction之间,重写dispatch 5.compose 整合多个中间件 接下来我们来依次实现...上下文中,contextreact组件特有的一种不用手动一层层传递props就能在组件树传递数据方式,这样就实现了store相对于react组件全局化,所有组件都能对store进行修改,获取,监听了...connect组件接受一个component组件返回一个新component组件,connect最终返回组件获取store并将store设置为当前组件state,并且connect返回组件

62230

如何在 React 应用中使用 Hooks、Redux 等管理状态

因此,我们是否真的需要让一个状态对许多组件可用,或者我们是否可以将其保持单个组件, 在这两者之前取一个平衡是非常重要。...(这也是 Redux 被批评主要原因),所以让我们把它分解成几块: 正如我提到Redux 一个外部库,所以进行任何操作之前,我们需要通过运行 npm i redux react-redux 来安装它...代码,你可以看到,对于每个 action,我们都声明了常量来代替普通字符串(这是一个可以提高可维护性做法),以及一些仅返回一个 type 或者 一个 type 一个 payload 函数。...Redux toolkit Redux toolkit 一个建立 Redux 之上库,其目的去除 Redux 产生一些复杂性模板。...一种将 action reducer 压缩为同一个方法。

8.3K20
领券