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

医疗数字阅片-医学影像-Redux中的reducer到底是什么,以及它为什么叫reducer?

[OHIF-Viewers]医疗数字阅片-医学影像-Redux中的reducer到底是什么,以及它为什么叫reducer?...那么剩下的这个reducer连翻译都很难翻译的东西应该怎么理解呢?...我们要注意到这里的中文翻译理解其实是错误的。原文的本意并不是说redux里的reducer会被传入到 Array.prototype.reduce 这个方法中。...为了进一步加深理解,我们再了解一下reduce是什么东西,这个名词其实是函数式编程当中的一个术语,在更多的情况下,reduce操作被称为Fold折叠(下图来自维基百科)。 ?...有任何好的意见或者是建议欢迎在评论区参与讨论,如果文中有任何错误也欢迎在评论区批评指正。 参考资料 Why is a Redux reducer called a reducer?

76810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Redux开发实用教程

    可以看到,在整个流程中数据都是单向流动的。 Redux和Flux的对比 Redux是Flux思想的一种实现,同时又在其基础上做了改进。...Redux中没有Dispatcher:它使用Store的Store.dispatch()方法来把action传给Store,由于所有的action处理都会经过这个Store.dispatch()方法,所以在...虽然React 试图在视图层禁止异步和直接操作 DOM 来解决这个问题。美中不足的是,React 依旧把处理 state 中数据的问题留给了你。Redux就是为了帮你解决这个问题。...对于小应用来说,使用字符串做 action type 更方便些。不过,在大型应用中把它们显式地定义成常量还是利大于弊的。...,这个函数来调用你的一系列 reducer,每个 reducer 根据它们的 key 来筛选出 state 中的一部分数据并处理,然后这个生成的函数再将所有 reducer 的结果合并成一个大的对象。

    1.4K20

    Redux框架reducer对状态的处理

    前言 在react+redux项目里,关于reducer处理state的方式,在redux官方文档中有这样一段描述: 不要修改 state。 使用 Object.assign() 创建了一个副本。...为什么要创建副本state 在redux-devtools中,我们可以查看到redux下所有通过reducer更新state的记录,每一条记录都对应着内存中某一个具体的state,使得用户可以追溯到每一次历史操作产生与执行的状态...,这也是使用redux管理状态的重要优势之一。...则可选的方案包括: 方案1 将todoApp这个reducer拆分为更细化的reducer,以保证visibilityFilter属性中嵌套对象b的属性d能得到正确更新。...小结 就redux-form而言,在一些场景中,能明显感受到输入操作存在顿挫感。显然,当我们在选择外部插件时,需要合理考虑其对state的处理方式。

    2.2K50

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

    而 React-redux 就是把 Redux 这种架构模式和 React.js 结合起来的一个库,就是 Redux 架构在 React.js 中的体现。...设计 State 结构 在 Redux 应用中,所有的 state 都被保存在一个单一对象中。建议在写代码前先想一下这个对象的结构。如何才能以最简的形式把应用的 state 用对象描述出来?...你也可以开启对ES7提案对象展开运算符的支持, 从而使用 { ...state, ...newState } 达到相同的目的。 在 default 情况下返回旧的 state。...新的 todos 对象就相当于旧的 todos 在末尾加上新建的 todo。而这个新的 todo 又是基于 action 中的数据创建的。...4.Redux store 保存了根 reducer 返回的完整 state 树。 这个新的树就是应用的下一个 state!

    3.7K10

    React归纳笔记:快速上手Redux之一初识

    翻译成人话就是说:Redux是一个用于存放JavaScript状态的容器,只要你将状态放到该容器中,你编写的程序将会行为一致且易于测试!总之是很牛就对了。...---- Redux的主要组成有三部分:action 、reducer、store。 Redux配置 我们通过create-react-app快速搭建一个Redux环境。...action其实是一个包含type(强制要求)属性的普通对象,这个type是我们判断用户行为的关键。...2、dispatch派发action后,最终会执行到reducer函数 3、在reducer内得到的第二个参数即是派发的action 4、根据action的type属性,来决定是否操作state ---...说的直白一些,reducer返回的是什么,state就是什么! —————END—————

    50930

    redux_todoList案例

    todoList是什么 todolist是一个经典的案例,代办项的意思。一般我们初学一门语言的时候基本都是会做一个todoList来验证自己所学的知识。我们这里用来理解redux也是一个不错的方法。...reducer 我们说reducer是一个函数,给定一个确定的输入必定有一个确定的输出。他的作用就是操作我们需要的state(状态)。 那么在todolist里面有那几个状态呢?...所以我们需要使用redux提供的combineReducers方法把所有的reducer集合起来。...因为我们使用的是redux,而redux又提倡数据域结构分离,所以在文件目录下面有components与containers两个文件夹。...在react-redux中,我们使用react-redux提供的connect方法。他的作用就是把component与container链接起来。

    81230

    React进阶(3)-上手实践Redux-如何改变store中的数据

    在reducer函数接收的第二个参数action就是接下来要干的事情了 在Redux中为了能够查看store中的各个状态,在chrome浏览器需先安装一个redux Devtools这个调试工具 当然安装这个插件...(   applyMiddleware() )); 以上两种方法都可以开启Redux的调试功能,第二种方法比较强大,推荐使用,这种配置完后,在各个浏览器都是可以使用的,至于其他一些额外拓展功能的,在后续的文章中...做一次深拷贝,在Redux中,reducer不允许直接修改state        // const newState = Object.assign({}, state);这个Object.assign...,reducer相互之间的关系,如果不清晰他们之间的关系,在遇到复杂的大型项目时,各个文件切来切去的,绝对是一头雾水,懵逼的,维护起来也是想死的心都有 结语 本文并不是什么高大上的内容,主要是对学习Redux...,在上文当中都有与之对应的操作和解释 用几句简单话:概括下使用Redux的流程 安装redux,然后从redux中引入createStore这个方法,并调用它,从而创建store, 紧着在创建reducer

    2.6K30

    React进阶(3)-上手实践Redux-如何改变store中的数据

    在reducer函数接收的第二个参数action就是接下来要干的事情了 在Redux中为了能够查看store中的各个状态,在chrome浏览器需先安装一个redux Devtools这个调试工具 当然安装这个插件...(reducer) 真正的新老房信息的变更操作都是在reducer这个函数中完成的,并且它是一个纯函数,必须要有返回值 在Reducer函数中,接收两个参数,第一个是上一次组件的状态值,而第二个是组件具体的动作...做一次深拷贝,在Redux中,reducer不允许直接修改state // const newState = Object.assign({}, state);这个Object.assign...做一次深拷贝,在Redux中,reducer不允许直接修改state // const newState = Object.assign({}, state);与下面的是等价的...的数据,以及怎么更新store的数据的更新,在上文当中都有与之对应的操作和解释 用几句简单话:概括下使用Redux的流程 安装redux,然后从redux中引入createStore这个方法,并调用它,

    2.2K20

    Redux(一):基本概念

    三大原则 一、单一数据源 应用的state保存在一个JavaScript对象树中,并且这个对象树只能存在于唯一的一个store中。...3、创建一个store 在redux中应该只有一个store,单一数据源,这一点很重要。redux向外暴露了一个createStore方法用来创建store。...例子中,无论是对象还是数组,并没有直接去修改属性会增加元素,返回的都是一个新的对象或数组,这一点很重要,因为在js中对象是按地址引用的,直接修改属性或push一个元素,引用地址并没有发生变化,这会导致出现一些难以控制的情况...所以,在redux中不应该使用如:push、pop、slice等方法。对于数组可以用concat、拓展运算符、map等;对于对象可以用Object.assign()、拓展运算符等。...总结: 可以看到Redux使用的是派发/监听的设计模式,每次派发action,reducer运算结束后会执行在subscribe注册的回调函数。

    1.3K10

    Redux 入门教程(一):基本用法

    用户的使用方式非常简单 用户之间没有协作 不需要与服务器大量交互,也没有使用 WebSocket 视图层(View)只从单一来源获取数据 上面这些情况,都不需要使用 Redux。...用户的使用方式复杂 不同身份的用户有不同的使用方式(比如普通用户和管理员) 多个用户之间可以协作 与服务器大量交互,或者使用了WebSocket View要从多个来源获取数据 上面这些情况才是 Redux...从组件角度看,如果你的应用有以下场景,可以考虑使用 Redux。...你需要一种机制,可以在同一个地方查询状态、改变状态、传播状态的变化。 总之,不要把 Redux 当作万灵丹,如果你的应用没那么复杂,就没必要用它。...Redux 提供了一个combineReducers方法,用于 Reducer 的拆分。你只要定义各个子 Reducer 函数,然后用这个方法,将它们合成一个大的 Reducer。

    1K50

    React 16 - 生态:Redux

    Redux 出现原因 Redux:全局只有一个唯一的 Store,负责管理整个应用程序所有的状态 出发点:让组件通信更加容易 (opens new window) 特性 Single Source...React 中使用 Redux import { connect } from 'react-redux'; class SidePanel extends Component {} function...异步请求 异步 action 不是特殊 action,而是多个同步 action 的组合使用 Redux 中间件 中间件在 dispatcher 中截获 action 做特殊处理 截获 action...发出 action 如何组织 Action 和 Reducer “标准”形式 Redux Action 的问题: 所有 Action 放一个文件,会无限扩展 Action,Reducer 分开,实现业务逻辑时需要来回切换...系统中有哪些 Action 不够直观 更好的组织:单个 action 和 reducer 放在同一个文件 新的方法:每个文件一个 Action 易于开发:不用再 action 和 reducer 文件间来回切换

    30420

    精读《React 的多态性》-文章底部有惊喜

    读完文章才发现,文章标题改为 Redux 的多态性更妥当,因为整篇文章都在说 Redux,而 Redux 使用场景不局限于 React。...先看看普通的 redux 的 reducer: const todo = (state = {}, action) => { switch (action.type) { case "ADD_TODO...state.completed }); default: return state; } }; 我们简化一下使用场景,假设基于这个 reducer todo,生成了两个新...同样,在 Redux 代码中常用的 Object.assign 也有这个问题: 因为新的对象以 {} 空对象作为最初状态,js 引擎会为新对象创建 Empty Shape,这与原对象的 Shape 一定不同...通过最近两篇精读的分析,我们需要重新思考这样做带来的优缺点,因为在 js 环境中,Object.assign 的优化效率比 Immutablejs 库更低。

    33720

    Redux(二):组织reducer

    在实际项目中,分支语句对应的action.type会非常多,如果写到一个reducer里这个函数会变的非常的臃肿,所以接下来需要对其进行逐步的拆分。...二、提取工具函数 期间大量的使用的Object.assign()方法,这是一个ES6函数用来创建一个新对象,可以将其提取成一个函数: function updateObject(oldObject,newValues...这个例子中包含2种数据状态:visibilityFilter和todos,且每一个case的代码块值关心其中的一个数据状态,所以简单改造一下: function setVisibilityFilter...接着依次执行通过subscribe注册的回调函数,那么这个回调函数就是关键了,如果都是同步函数,那放到一个数组中遍历依次执行即可,但如果是异步函数那就要用到接下来要讲的中间件了,可以说正是中间件系统极大的拓展了...redux的功能,丰富了我们的应用。

    51630
    领券