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

我在一个文件中写了一个reducer和action,这是一个好的实践吗?

写一个reducer和action是使用Redux进行状态管理的一个常见实践。Redux是一个用于JavaScript应用程序的可预测状态容器。通过使用reducer和action来管理应用程序的状态,可以使应用程序更加可维护、可测试和可扩展。

Reducer是一个纯函数,用于根据当前的state和action来计算新的state。它接收旧的state和action作为参数,并返回一个新的state。Reducer应该是一个纯函数,意味着它不应该有任何副作用,并且对相同的输入始终产生相同的输出。在Redux中,通常会将reducer放在一个单独的文件中。

Action是一个描述发生了什么的普通对象。它们是触发state变化的唯一途径。通过派发一个action,Redux会将该action传递给reducer,从而更新应用程序的状态。Action通常以一个函数的形式定义,并且可以包含一些payload数据,用于更新state。

使用reducer和action的好处包括:

  1. 单一数据源:Redux的状态是存储在一个单一的store中,这样可以方便地追踪和调试应用程序的状态变化。
  2. 可预测性:Redux的状态变化是通过派发action来触发的,每个action都会被传递给reducer进行处理,这使得应用程序的状态变化是可预测的。
  3. 可维护性:将应用程序的状态管理抽离到reducer和action中,可以使代码更加模块化和易于维护。
  4. 可测试性:由于reducer和action是纯函数,所以可以很容易地编写单元测试来验证它们的行为。
  5. 扩展性:通过定义不同的action和reducer,可以轻松地扩展应用程序的功能和状态管理。

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

  • 云函数(Serverless Cloud Function):腾讯云函数是无服务器的云计算产品,可以帮助开发者更轻松地编写和部署各种类型的应用程序。详情请参考:https://cloud.tencent.com/product/scf
  • 云数据库MySQL版(TencentDB for MySQL):腾讯云数据库MySQL版是一种可扩展、高性能、高可靠性的关系型数据库服务。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云容器服务(TKE):腾讯云容器服务是基于Kubernetes的容器化应用管理解决方案,提供高度可扩展的容器集群管理能力。详情请参考:https://cloud.tencent.com/product/tke
相关搜索:Fk在不同的模式中,这是一个很好的实践吗?Python的非本地关键字-这是一个好的实践吗?Javax Websocket使用路径参数提交登录数据,这是一个好的实践吗?如果以递归方式返回一个函数,会发生什么情况?这是一个好的实践吗?这在Python中是正常使用的吗?/是一个好的实践吗?这是在mysql中为同一个表创建多个视图的良好实践(性能方面)吗我如何制作一个文件,加载一个变量的酸洗文件,打印它,给你一个添加和重新挑选的选项?在repl.it上这是可能的吗?这是读取一个充满双精度的二进制文件的好方法吗?我试图通过py文件传递一个全局变量。这是正确的吗?ASP.NET:在会话中存储类属性和使用会话处理程序 - 这是一个好的设计吗?我可以在一个命令中读取FITS文件吗?我如何使用好的实践在javascript中声明一个矩阵?我可以在同一个AppService中运行一个节点和aspnetcore吗?如果我在程序中写了一个没有goto语句的标签,会发生什么?在ExecuteStoreQuery EF中执行存储过程.这是EF中的一个错误吗?在Android中重用recyclerview的布局和适配器是一个很好的实践吗?我可以在zeppelin的一个`sh`命令中包含一个变量吗?在我的.js文件中包含一个变量我可以在VUE中的单个文件组件中定义一个组件吗?在更高的层中编写接口是否被认为是一个好的实践?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ilus: 这是一个轻量级全基因组(WGS)全外显子(WES)最佳实践分析流程生成器

这个工具一年前写了一个版本(当时只知识星球里分享过一次),过程也调试了碰到问题,日趋完善,后续还将迭代更新。...这个工具将其命名为 ilus (/i:ləs/),这是看过一部美剧——《无垠太空》通过星环抵达一个系外类地行星名字。...因此,作为一个轻量级工具,设计 ilus 时候从一开始就没将自动投递运行任务功能考虑在内。更希望它作为一个框架程序,严格依据你输入数据配置文件信息,生成符合你分析需求流程脚本。...因此, ilus 还同时实现了一个专门用来检查任务作业完成状态程序,具体用法同样参考下文 WGS 例子。...此外,要注意配置文件 variant_calling_interval 参数。这是一个专门用来指定变异检测区间参数。

2.5K41

超性感React Hooks(七)useReducer

1 用最简单递增递减案例,来大家分享一下它用法。 最终实现效果如图。 ?...初始化设置为0 redux,我们称这样状态值为Store const initialState: number = 0; 然后我们需要定义一个ReducerReducer一个函数。...在这个简单案例Action被我们定义成为一个字符串,reducer内部会根据不同字符串,执行不同修改状态逻辑。...一个大型项目中,需要修改状态至少数以千计,要维护这么多Action,人都要疯。 复杂度无法预知Store 实践Store可不仅仅只是一个数字。...3 Redux,借助它提供combineReducer方法,我们可以将多个Reducer合并为一个。这让我们实践时,可以将整个大Reducer进行拆分,以减少复杂度。

2.2K20
  • 干货:大型互联网公司分布式缓存优秀实践线上案例在此推荐一个学习架构框架学习体系:

    优秀实践2 建议将使用缓存业务进行分离,核心业务非核心业务使用不同缓存实例,从物理上进行隔离,如果有条件,则请对每个业务使用单独实例或者集群,以减小应用之间互相影响可能性。...优秀实践5 所有的缓存实例都需要添加监控,这是非常重要,我们需要对慢查询、大对象、内存使用情况做可靠监控。...原因:应用程序对使用大量缓存key设置了同一个固定失效时间,当缓存失效时,会造成一段时间内同时访问数据库,造成数据库压力较大。...如果你分布式技术还不够过硬,经验还不够,且在工作遇到瓶疾,技术提升不上去,这里可以推荐给大家一个学习交流群:697579751 里面会分享一些资深架构师录制视频录像:有Spring,MyBatis...还能领取免费学习资源,目前受益良多 在此推荐一个学习架构框架学习体系: 源码分析: ? 性能优化: ? 微服务架构: ? 分布式架构: ? 项目实战: ? 并发编程 ?

    99160

    react+redux+webpack教程2

    为了简便,我们把整个登录页面作为一个组件,放在containers目录下。 还记得前面说过containerscomponents目录?...redux里,任何一个action都会在所有的reducer里过一遍, 所以对于一个reducer来说实际上绝大多数情况action都不是它能处理,最后还是返回当前状态值。 觉得很低效??...类型名称常量现在都写到了action文件里,不过也许把所有这些常量放到一个单独文件里比较好, 这样es6语法帮助下就可以避免重复了。.../reducers这个文件这是个目录,实际文件是里面index.js), 所以我们也需要把新写reducer注册到这里面去。...MVVM框架里只需要建立一个视图模型,用一对双大括号就能完成事情,到react加redux里面为何如此大费周折? 其实是专门展示完整redux+react开发流程。

    1.3K70

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

    上篇:从 Redux 设计理念到源码分析 本文续上篇,接着看 combineReducers、applyMiddleware compose 设计与源码实现 至于手写,其实也是非常简单,说白了,「去掉源码严谨校验...combineReducers 从上一篇我们知道,newState 是 dispatch 函数,通过 currentReducer(currentState,action)拿到。...虽然最终还是一个根,但是每一个枝放到不同文件 or func 处理,然后再来组织合并。(模块化有么有) combineReducers 并不是 redux 核心,或者说这是一个辅助函数而已。...但是个人还是喜欢这个功能。它作用就是把一个由多个不同 reducer 函数作为 value object,合并成一个最终 reducer 函数。...其实即使我们上面手写 reverse 部分。 reduce 是 es5 数组方法了,对累加器和数组每个元素(从左到右)应用一个函数,将其减少为单个值。

    40030

    56. 精读《重新思考 Redux》

    经过长期实践,组件最好不要使用数据流,项目的数据流只用一个实例完全够用了,全局 dispatch 设计其实更合理,而注入 dispatch 设计看似追求技术极致,但忽略了业务使用场景,导致画蛇添足,...同步场景,一个 reducer 函数就能处理,只有异步场景需要 effect action 处理掉异步部分,同步部分依然交给 reducer 函数,这两种 action 职责更清晰。...不再显示申明 action type 不要在用一个文件存储 Action 类型了,const ACTION_ONE = 'ACTION_ONE' 其实重复写了一遍字符串,直接用对象 key 表示 action...; 其次使用 async effects 函数,使用 this.increment 函数调用方式,取代 put({type: "increment"})(dva), typescript 拥有了类型支持...4 总结 重复一下作者提出工具质量公式: 工具质量 = 工具节省时间/使用工具消耗时间 如果一个工具能节省开发时间,但本身带来了很大使用成本,在想清楚如何减少使用成本之前,不要急着用在项目中,这是得到最大启发

    45220

    Rematch: Redux 重新设计

    假设reduceraction类型匹配,那么我们可以对参数进行反转,这样每个reducer都是一个接受state action纯函数。...一个简单 action 到底是作为一个动态类型对象、一个函数,还是一个 Promise?这难道不是一种拙劣实践? 如上图右边所示,难道我们就不能只使用 async/await ? 4....不再有 action 类型(action.type)变量 为什么我们标准实践要把 action creator reducer 区分开来呢?能否只用其中一个呢?...const ACTION_ONE = 'ACTION_ONE'是分离 action creators reducers 一个冗余产物。应将两者视为一体,并且不再需要文件导出类型字符串。...Redux 与 Rematch 对比 Redux 是一个出色状态管理工具,有键全中间件生态与出色开发工具。 Rematch Redux 基础上构建并减少了样板代码执行了一些最佳实践

    1.6K50

    深度理解Redux原理并实现一个redux

    Redux作用是什么Redux作用在于实现状态传递、状态管理。在这里你可能会说了,如果是状态传递,那我props传递不也是可以达到这样效果?...context上下文方案不也是可以达到这样效果?没错,是这样,但是上述两种方案是有局限性。props方案只适用于父子组件传递状态。...store.js文件里面的createStore。reducer.js文件里面的cloneDeep、return state、state = initialValue。...各位同学可以看得到我reducer做了一次state深克隆,这是为什么呢?...是因为每一次action我们拿到是同一个state内存地址,我们期望是不管你switch如何更改state但是不希望在这一步就改变了公共状态count,只有return时候才会去更改真正公共状态

    41310

    深度理解Redux原理并实现一个redux_2023-02-28

    Redux作用是什么 Redux作用在于实现状态传递、状态管理。在这里你可能会说了,如果是状态传递,那我props传递不也是可以达到这样效果?...context上下文方案不也是可以达到这样效果?没错,是这样,但是上述两种方案是有局限性。 props方案只适用于父子组件传递状态。...store.js文件里面的createStore。 reducer.js文件里面的cloneDeep、return state、state = initialValue。...各位同学可以看得到我reducer做了一次state深克隆,这是为什么呢?...是因为每一次action我们拿到是同一个state内存地址,我们期望是不管你switch如何更改state但是不希望在这一步就改变了公共状态count,只有return时候才会去更改真正公共状态

    51140

    React技术栈项目结构探究

    React+Redux项目结构探索 整理学习react技术栈相关知识,写了一个电商AppDemo后,开始思考起该如何高效组织react项目的项目结构。...示例写法,刚开始学习时候,很多学习demo也是按照这种方式去组织代码结构 这种结构最直观就是,看起来非常简单明了。...《深入浅出ReactRedux》一本书中,推荐就是这种方式,真正做到组件化,划分到组件、状态行为都在同一个文件夹里。...对来说,把这些相关代码放在一个独立文件更方便,这样做还可以很容易打包到软件库/包。...但在使用Ducks结构时,action creatorsreducer定义一个文件,import *导入方式会把reducer也导入进来(如果action types也被export,那么还会导入

    90230

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

    中间件 redux-logger 外,还有两个额外包,这是因为 Taro ,Redux 原绑定库 react-redux 被替换成了 @tarojs/redux @tarojs/redux-h5...,复习了一下 Redux 概念之后,我们马上来创建 Store,Redux 最佳实践推荐我们将 Store 保存在 store 文件,我们 src 文件夹下面创建 store 文件夹,并在其中创建...回到我们页面逻辑,我们底部有两个 Tab 栏,一个为 "首页",一个为 "", ”首页“ 里面主要是展示一列文章和允许添加文章等,“ 里面主要是允许用户进行登录并展示登录信息,所以整体上我们逻辑有两类...申明了 User Reducer 初始状态 INITIAL_STATE,并将它赋值给 user 函数 state 默认值,它接收待响应 action user 函数内部就是一个 switch...•分发 Action,当组件 dispatch 一个 Action, combineReducers 会遍历 user Reducer post Reducer,当匹配到任一 Reducer

    2.2K21

    是这样 React 实践 TDD 编程

    准备好mock适配器后,我们就可以专注于初始化存储并编写测试了。 编写测试 这是最有趣部分。让我们开始TDD。 首先,让我们创建并配置存储。src目录,创建一个名为index.js新目录。...: rootReducer, }); 编写 userSlice “slice”是应用程序单个特性Redux reducer逻辑动作集合,通常定义单个文件。...让我们通过编写一个测试: src/store创建一个名为slices新目录。 在这个目录,添加一个名为user.test.js文件。这个文件将包含我们将为userSlice编写测试。...我们还没有定义userSlice、reducer初始状态。 slice目录,创建一个名为user.js文件。...我们刚刚使用Redux、thunkaxios mock编写了一些测试 对你来说有点挑战?添加诸如删除用户、修改以及检索用户等功能。 结论 本文中,我们快速介绍了使用ReduxTDD。

    1.9K30

    不一样React组件化

    组件可以定义propsstate,状态改变了引发组件重绘,组件之间并不影响。 ,那现在如果有一个组件,从这个工程拷出来,粘贴到另一个工程,然后代码跑不起来了。...反向依赖 一般React实践,视图层和数据层依赖都是正向。视图层正向依赖可以举例为:组件B是组件A子元素,那么需要再组件A显示声明组件B存在。 import B from '....但凡使用React工程,都会选择一个状态管理工具。Redux使用者较多,我们也是其中一员。Redux中使用actionreducer概念进行事件分发和数据组装。...然后创建对应看起来差不多reducer.js,引用action.js那个常量actiontype。这波操作从最开始接触reducer时候就觉得过于恶心。...禁止依赖检查 我们组件化,依赖并不是直接引用。会存在一个完全解耦依赖声明。

    84430

    深入理解redux

    第二个原因是最近面试过程,发现很多候选人对redux理解很浅,甚至有错误理解。真正理解redux思想的人非常,更不要说理解它其中精妙设计了。 因此就有了这篇文章诞生。...state通过闭包形式存放在redux store,保证其是只读。如果你想要更改state,只能通过发送action进行,action本质上就是一个普通对象。...被要求很关键,因为reducer并不是定义redux一个东西。而是用户传进来一个方法。...日常工作我们也会用到reduce函数,它是一个高阶函数。reduce一直是计算机领域中一个非常重要概念。 reducerreduce名字非常像,这是巧合?...首先redux通过createStore生成了一个原始store(没有被enhance),然后最后将原始storedispatch改写了调用原生reducer之间,插入中间件逻辑(中间件链会顺序依次执行

    94720

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

    更重要是,这不是软件设计。中间组件被迫接受传递他们并不关心 props。也就意味着重构重用这些组件会变得比原本更难。 如果不需要这些数据组件根本不用看到它们的话不是很棒?...“reducer” 术语看起来可能有点陌生害怕,但是本节过后,认为你会同意如下观点,正如俗话所说那样,“只是一个函数”。 你用过数组 reduce 函数?...给 Reducer 一个初始状态 记住 reducer 职责是接收当前 state 一个 action 然后返回新 state。 它还有另一个职责:首次调用时候应该返回初始 state。...Actions 生成器 Redex 术语一个简单函数术语,它返回一个 action 对象。就这些 :) 这是其中两个,返回熟悉 actions。...有时也依旧会忘记。 如何使用 React Redux mapDispatchToProps 现在你知道 action 生成器是什么,我们可以讨论又一个级别的抽象。(知道,知道。这是可选。)

    4.2K20
    领券