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

【领域驱动设计】Redux 和领域驱动设计

本文中,解释了 DDD 是什么,一些关键概念,以及 Redux 如何实现其思想。理解两者,我们可以提供更好实现;来自不同世界两种方法相互碰撞并利用相同设计原则。...战术相关概念是: 查询:您可以对系统提出任何问题。它不会更改状态或任何数据。这是你要求东西,它会以信息回应。没有副作用。查询示例:列出可用帖子。 命令:是对突变请求。...让我们将之前概念与 Redux 进行比较: 查询:它们是选择器。选择器从状态获取一条信息。 命令:它们是动作。当我们调度一个动作时,我们提交一个新命令。...推理很简单:您可以通过重放其事件来重建任何聚合状态。 例如,您可以通过重播 PostAdded 事件来重建所有帖子。 你熟悉 Redux 这个概念?几乎可以肯定,是的。...我们减少了应用程序耦合,我们可以更改任何代码情况下从系统插入和拔出单元。 Redux 做同样解耦。每个组合减速器就像一个聚合体。当 reducer 收到一个动作时,它会独立地减少它。

1.4K30

Rematch: Redux 重新设计

本文中,我们将探讨一些你可能一直问自己问题: 你是否需要一个用于状态管理库? Redux 受欢迎程度是否值得我们去使用? 为什么或者为什么不值得? 我们能否制定更好状态管理解决方案?...为什么使用 Redux 表层之下,Redux 与 TJ 根对象{}完全相同——只是包装在了一系列实用工具管道(pipeline) Redux ,不能直接修改状态。...2.effect action:触发异步 action,这可能会调用reducer操作,但异步函数不会直接更改任何状态。...Rematch 对 Redux 进行了封装,提供更简单 API,但又不失任何可配置性特点 请参见下面的一个完整 Rematch 示例: 在过去几个月里,一直实际业务中使用 Rematch。...Redux没有抛弃,而且也不应该被抛弃。

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

【19】进大厂必须掌握面试题-50个React面试

.子组件内部更改 没有 是 17.如何更新组件状态?...用Redux开发应用程序易于测试,并且可以表现出一致行为不同环境运行。 37. Redux遵循三个原则是什么? 单一事实来源:整个应用程序状态存储单个存储对象/状态。...如果不需要完成任何工作,它将按原样返回以前状态。 43.Redux存储意义是什么?...商店是一个JavaScript对象,它可以保存应用程序状态并提供一些帮助程序方法来访问状态调度动作和注册侦听器。应用程序整个状态/对象树保存在单个存储。因此,Redux非常简单且可预测。...Flux Redux 1.存储包含状态更改逻辑 1.存储和更改逻辑是分开 2.有多家商店 2.只有一家商店 3.所有商店都断开连接并保持平坦 3.带有分层减速器单店 4.有单身派遣员 4.没有调度概念

11.1K30

手摸手教你基于Hooks Redux 实战姿势

原文:Redux Crash Course with Hooks ?[1] 作者:Chris Achard 译者:博轩 为保证文章可读性,本文采用意译 ? 你对 Redux 感到困惑?...Redux 使您可以集中存放 JavaScript 应用程序状态(数据) 它最常与 React 一起使用(通过 react-redux ) 这使您可以从树任何组件访问或更改状态。 ? 2....应用状态集中存放于 Redux store 该 store 是使用称为 “reducer” 函数所创建 reducer 接受一个 state 和一个 action , 并返回相同或新状态 ?...不要在 reducer 修改 state 值,仅返回一个值已经更改拥有新状态对象。 ? 9....所有连接组件(调用 useSelector )将自动获得新状态 就像 props 或者 state 改变一样 - useSelector 将自动检测更改,React 将重新渲染组件。

1.4K20

设计师都能懂 Redux 指南

请不要用 Google 搜索 花哨后端东西 听说过它,但我不知道它是什么,这可能是一个 React 框架 是一种 React 应用存储管理状态更好方式 这个问题,问过 40 多位设计师,以上是他们经典回答...目标是帮助像你们这样设计师。即使您以前没有写过一行代码,认为理解 Redux仍然是可能、有益和有趣。 什么是 Redux 超高水平上,Redux 是开发人员用来简化他们工作工具。...它会使 Redux 过时? 你猜怎么着? 没有向你展示Redux真正力量! Redux 迫使开发人员遵循一些严格规则,这给 Redux 带来了强大功能。... Redux 术语这称之为 “派发 (dispatching) 动作”。 更改数据代码必须像数学公式一样。 相同输入情况下,它必须返回相同结果。...人们一直抱怨他们必须用 Redux 编写样板代码。 知道,这听起来很矛盾。 不是说 Redux 能够用最少代码实现功能? 这有点像使用洗碗机。 首先,你得花时间仔细地排列盘子。

1.6K10

从设计角度看 Redux

请不要用 Google 搜索 花哨后端东西 听说过它,但我不知道它是什么,这可能是一个 React 框架 是一种 React 应用存储管理状态更好方式 这个问题,问过 40 多位设计师,以上是他们经典回答...目标是帮助像你们这样设计师。即使您以前没有写过一行代码,认为理解 Redux仍然是可能、有益和有趣。 什么是 Redux 超高水平上,Redux 是开发人员用来简化他们工作工具。...它会使 Redux 过时? 你猜怎么着? 没有向你展示Redux真正力量! ? Redux 迫使开发人员遵循一些严格规则,这给 Redux 带来了强大功能。... Redux 术语这称之为 “派发 (dispatching) 动作”。 更改数据代码必须像数学公式一样。 相同输入情况下,它必须返回相同结果。...人们一直抱怨他们必须用 Redux 编写样板代码。 知道,这听起来很矛盾。 不是说 Redux 能够用最少代码实现功能? 这有点像使用洗碗机。 首先,你得花时间仔细地排列盘子。

1.7K30

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

没有维持自己状态 1. 保持着自己状态 2.数据由父组件控制 2.数据由 DOM 控制 3. 通过 props 获取当前值,然后通过回调通知更改 3. Refs 用于获取其当前值 30....使用 Redux 开发应用易于测试,可以不同环境运行,并显示一致行为。 37. Redux遵循三个原则是什么? 单一事实来源:整个应用状态存储单个 store 对象/状态树里。...Redux 使用 “Store” 将程序整个状态存储同一个地方。因此所有组件状态都存储 Store ,并且它们从 Store 本身接收更新。... Redux ,action 名为 Action Creators 函数所创建。...所有 Store 都互不影响且是平级 3. 带有分层 reducer 单一 Store 4. 有单一调度器 4. 没有调度概念 5. React 组件订阅 store 5.

3.5K21

Facebook 新一代 React 状态管理库 Recoil

Redux 或 Mobx 不可以? 因为 React 本身提供 state 状态跨组件状态共享上非常苦难,所以我们开发时一般借助一些其他库如 Redux、Mobx 来帮助我们管理状态。...使用 Redux、Mobx 当然可以,并没有什么问题,主要原因是它们本身并不是 React 库,我们是借助这些库能力来实现状态管理。...并且,它们并不能访问 React 内部调度程序,而 Recoil 在后台使用 React 本身状态未来还能提供并发模式这样能力。...异步状态 Recoil 提供了通过数据流图将状态和派生状态映射到 React 组件方法。真正强大功能是图中函数也可以是异步。这使得我们可以异步 React 组件渲染函数轻松使用异步函数。...例如下面的例子,如果用户名存储我们需要查询某个数据库,那么我们要做就是返回一个 Promise 或使用一个 async 函数。如果 userID 发生更改,就会自动重新执行新查询。

1.6K10

『初中级前端必看』谈谈如何更有质量地看源码

那么源码真的是一块难啃硬骨头? 其实不是的。 作为一个优秀(或说合格)开源项目,它代码一定不会是晦涩难懂。...但是我们可以看看相关文档里,作者对这个库说明部分节选: 假设有一个业务广泛使用函数,我们是否能够既不更改调用业务代码,也不更改该函数源码前提下,在其执行前后注入一段我们自定义逻辑呢?...看注释 我们深入到某一个具体函数或者文件时,如果我们能先知道它是干啥,那么对于我们要理解这段代码来说,是事半功倍。 举个例子,我们来看看redux。...redux/src/createStore.js开头有这么一段注释: Creates a Redux store that holds the state tree....创建一个保存状态Redux仓库。更改仓库数据唯一方法是对其调用dispatch()。 哦,那么通过上面的注释,我们就知道dispatch方法是用来对数据进行调度

43620

React 中进行事件驱动状态管理

每个状态及其操作方法均在被称为模块函数定义。这些模块传递到 createStoreon() 函数,然后将其注册为全局 store。...@changed – 当应用状态发生更改时,将触发此事件。 注意:store.on(event,callback) 用于我们模块添加事件监听器。... addNote 事件,我们返回添加了新 note 更新后状态对象, deleteNote 事件把 ID 传递给调度方法 note 过滤掉。...submit() – 该方法通过传递输入状态值来调度addNote事件,该状态Notes组件本地定义。 handleInput() – 此方法将本地状态值设置为用户输入。...Storeon devtools Storeon 与 Redux 有着相似的属性,可以 Redux DevTools 可视化和监视状态更改

2.4K20

MobX学习之旅

当应用公共状态组件状态发生变化时候,会自动完成与状态相关所有事情,例如自动更新View,自动缓存数据,自动通知server等。...例如React体系,react + redux + react-redux + redux-saga, view层触发一个action,中间件会将这个动作进行dispatch,然后reducer执行相应更新状态方法...有所不同,这里观察数组对象这两个方法,是不会改变数组本身,而是一个拷贝数组; 3、Es6Map:创建一个动态建observable映射,可以对特定项更改做出反应等;会返回一个新Observable...,那就使用autorun,但是一般这种情况比较少 Action 比起官方说“动作”,更愿意称为是“行为”,mobxaction吸收了redux和vuex数据处理复杂逻辑 用来修改状态,不同于Computed... inject 引入数据方式,@inject(stores); 使得数据自动保存在组件this.props componentWillReact mobx-react新增生命周期钩子

1.4K20

前端高频react面试题整理5

redux-saga如何处理并发:takeEvery可以让多个 saga 任务并行 fork 执行。...尤雨溪社区论坛说道∶ 框架给你保证是,你不需要手动优化情况下,依然可以给你提供过得去性能。...React Hooks平时开发需要注意问题和原因(1)不要在循环,条件或嵌套函数调用Hook,必须始终 React函数顶层使用Hook这是因为React需要利用调用顺序来正确更新相应状态,...相互关联且需要对照修改代码进行了拆分,而完全不相关代码却在同一个方法组合在一起。如此很容易产生 bug,并且导致逻辑不一致。多数情况下,不可能将组件拆分为更小粒度,因为状态逻辑无处不在。...它调度对组件state对象更新。

91130

React知识图谱

它可以让你在不编写 class 情况下使用 state 以及其他 React 特性。 规则1:不要在循环,条件或嵌套函数调用 Hook, 确保总是在你 React 函数最顶层调用他们。...这个时候,可以考虑使用useReducer了,把state更新规则写在一个reducer函数,这样不仅reducer可以复用,并且组件没有复杂state修改规则。...创建视图以响应状态变化 • observer HOC • 返回响应式组件,它可以自动追踪哪个可观察量使用了以及当值改变时候自动重新渲染这个组件。...以上三者对比 redux是集中式管理state,而recoil和mobx都是分散式。 recoil状态读写都是Hooks函数,目前没有提供类组件使用方式。...MemoryRouter:把 URL 历史记录保存在内存 (不读取、不写入地址栏)。测试和非浏览器环境很有用,如React Native。

27520

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

Redux其实只是一个单纯状态管理库,没有任何界面相关东西,React-Redux关注是怎么将Redux跟React结合起来,用到了一些ReactAPI。...假如我们仓库是用来放牛奶,初始情况下,我们仓库里面一箱牛奶都没有,那Store状态(State)就是: { milk: 0 } Actions 一个Action就是一个动作,这个动作目的是更改...Store某个状态,Store还是上面的那个仓库,现在想往仓库放一箱牛奶,那"想往仓库放一箱牛奶"就是一个Action,代码就是这样: { type: "PUT_MILK", count...: 1 } Reducers 前面"想往仓库放一箱牛奶"只是想了,还没操作,具体操作要靠Reducer,Reducer就是根据接收Action来改变Store状态,比如我接收了一个PUT_MILK...本身就是一个单纯状态机,Store存放了所有的状态,Action是一个改变状态通知,Reducer接收到通知就更改Store对应状态

47541

React进阶(1)-理解Redux

,这不区分于无论是外部props还是内部state,而组件之间有时需要共享传递数据,Redux仅仅就是用来管理这些组件状态 一些开发者眼里,项目里要是没有用到Redux,就觉得很low,要么把...对于技术性投入,从来都是不吝啬,主动学习是对自己最好投资 (Redux的确理解有些绕,但并不代表学不会,多读书,多实践,巩固基础) 反之,则以下则是没有必要使用Redux UI层非常简单,只是用于渲染...状态,必须要通过派发(dispatch)一个action对象去完成 然后组件渲染对应界面要更改的话,实际更改就是组件状态,如果状态都是只能读不能修改的话,那么界面就不会更新变化了 想要更改用户界面的渲染...: 1, 当前元素在数组索引: 0, 调用数组: 1,2,3,4,5,6 VM1742:3 上一次调用回调返回值(或者是提供初始值): 1,数组当前处理元素: 2, 当前元素在数组索引...VM1742:3 上一次调用回调返回值(或者是提供初始值): 6,数组当前处理元素: 4, 当前元素在数组索引: 3, 调用数组: 1,2,3,4,5,6 VM1742:3 上一次调用回调返回

1.1K20

React进阶(1)-理解Redux

,这不区分于无论是外部props还是内部state,而组件之间有时需要共享传递数据,Redux仅仅就是用来管理这些组件状态 一些开发者眼里,项目里要是没有用到Redux,就觉得很low,要么把...,然后最终返回给我,实现房子替换 那么转换为代码理解:  页面上一个组件,想要获取更新Store数据,跟Store说,点击这个按钮,要更新这个组件数据,要干什么事情,做这个具体动作就是...状态,必须要通过派发(dispatch)一个action对象去完成 然后组件渲染对应界面要更改的话,实际更改就是组件状态,如果状态都是只能读不能修改的话,那么界面就不会更新变化了 想要更改用户界面的渲染...: 1, 当前元素在数组索引: 0, 调用数组: 1,2,3,4,5,6 VM1742:3 上一次调用回调返回值(或者是提供初始值): 1,数组当前处理元素: 2, 当前元素在数组索引...VM1742:3 上一次调用回调返回值(或者是提供初始值): 6,数组当前处理元素: 4, 当前元素在数组索引: 3, 调用数组: 1,2,3,4,5,6 VM1742:3 上一次调用回调返回

1.4K22

freeCodeCamp | Front End Development Libraries | 笔记

例如,默认行为是组件收到新 props 时重新渲染,即使 props 没有更改也是如此。 你可以使用 shouldComponentUpdate() 通过比较 props 来防止这种情况。... Redux ,所有状态更新都由调度操作(dispatching actions)触发。 Action 只是一个 JavaScript 对象,其中包含有关已发生 action 事件信息。...看看你是否可以找到一种方法来返回一个新数组, 其中项目 action.todo 附加到末尾。 由于 Redux 状态不变性, 此挑战目标是 reducer 函数返回一个新状态副本。...例如,默认行为是组件收到新 props 时重新渲染,即使 props 没有更改也是如此。 你可以使用 shouldComponentUpdate() 通过比较 props 来防止这种情况。... Redux ,所有状态更新都由调度操作(dispatching actions)触发。 Action 只是一个 JavaScript 对象,其中包含有关已发生 action 事件信息。

49410

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

更新状态后读取状态正确方法是使用 useEffect hook。它允许我们每个组件重新渲染后(默认情况下)或在我们声明更改任何特定变量之后执行一个函数。...这些函数就是我们要从组件 dispatch 去更改状态函数。 请注意,对这个例子做了一些改变,以显示在谈论 actions 时 payload 含义。...示例,你可以看到我们调用 ADDSOME/SUBSOME 时可以直接从组件传递我们想要加/减数字。...对于 Redux,要解决问题是处理全局状态(指影响整个应用程序或其中很大一部分状态)。用 Redux 来处理像我们例子计数器或模态打开和关闭是没有意义。...我们 UI ,我们只是调用 setCount 函数来更新我们状态

8.3K20

百度前端必会react面试题汇总

(1)不要在循环,条件或嵌套函数调用Hook,必须始终 React函数顶层使用Hook这是因为React需要利用调用顺序来正确更新相应状态,以及调用相应钩子函数。...Keys是 React 用于追踪哪些列表中元素修改、添加或者移除辅助标识开发过程,我们需要保证某个元素 key 在其同级元素具有唯一性。...key 主要是解决哪一类问题Keys 是 React 用于追踪哪些列表中元素修改、添加或者移除辅助标识。开发过程,我们需要保证某个元素 key 在其同级元素具有唯一性。... React Diff 算法 React 会借助元素 Key 值来判断该元素是新近创建还是移动而来元素,从而减少不必要元素重渲染此外,React 还需要借助 Key 值来判断元素与本地状态关联关系...redux-saga优点:异步解耦:异步操作转移到单独saga.js,不再是掺杂action.js或component.js;action摆脱thunk function: dispatch参数依然是

1.6K10

React Hooks 还不如类?

很难组件之间重用有状态逻辑 React 没有提供一种将可重用行为“附加”到组件方法(例如,将其连接到一个存储)……React 需要更好原语来共享状态逻辑。 很讽刺不是?...,并且仅当其参数之一更改时才会再次调用它。...通过渲染函数触发效果,我们可以确保每次渲染 / 更新时都调用该效果,但是给定函数只有在其参数之一更改情况下才会再次运行,因此我们可以结合 componentDidMount 和 componentDidUpdate...像 React 这样大型库 API 添加如此巨大更改时必须非常谨慎,而且这里动机其实并没有那么充分。 8. 缺乏声明性 在我看来,Funclass 比类更混乱。...顺便说一句, 2017 年底,发表了一篇题为“Redux 丑陋一面”帖子,今天,甚至 Redux 创建者 Dan Abramov 自己也已经承认 Redux 是一个巨大错误: https:/

81810
领券