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

从effect调度操作时,Angular NGRX无法将数据传递给reducer。出现错误- TypeError:无法冻结

问题描述: 从effect调度操作时,Angular NGRX无法将数据传递给reducer。出现错误- TypeError:无法冻结。

解决方法: 这个问题可能是由于尝试修改一个不可变对象导致的。在Angular NGRX中,reducer的输入状态(state)是不可变的,所以我们不能直接修改它。下面是一些可能导致此错误的常见原因和解决方法:

  1. 使用不可变操作更新状态:确保你在effect中使用了正确的不可变操作来更新状态。这可以通过使用Angular NGRX提供的函数(如mapmergeMapswitchMap等)来实现。
  2. 错误的reducer定义:检查你的reducer函数是否正确地处理了接收到的action,并返回了一个新的状态对象。确保你返回一个新的状态对象而不是修改原始的状态对象。
  3. 数据类型不匹配:确保在effect中传递给reducer的数据类型与reducer期望的数据类型匹配。如果不匹配,可以尝试进行数据类型转换或调整reducer的期望数据类型。
  4. 引用类型错误:如果在effect中传递的数据是一个引用类型(例如数组、对象),请确保你没有直接修改它。可以使用深拷贝或浅拷贝来创建一个新的副本,并对副本进行操作。
  5. 异步操作的处理:如果在effect中执行了异步操作(如网络请求),请确保使用mergeMapswitchMap等函数来处理异步操作,并在异步操作完成后再将结果传递给reducer。
  6. 使用正确的NGRX版本和相关库:确保你正在使用与Angular版本兼容的NGRX和相关库。同时,确保这些库的版本相互兼容。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云提供了一系列适用于云计算和开发的产品。以下是几个与本问题相关的产品:

  1. 云服务器(CVM):提供弹性、可扩展的虚拟云服务器,适用于部署应用程序和运行服务。产品介绍链接:https://cloud.tencent.com/product/cvm
  2. 云函数(SCF):无服务器计算服务,帮助开发者在云端运行代码,无需关心服务器管理。产品介绍链接:https://cloud.tencent.com/product/scf
  3. 云数据库MySQL版(CDB):可扩展的MySQL数据库服务,提供高可用性和强大的性能。产品介绍链接:https://cloud.tencent.com/product/cdb_mysql

请注意,以上链接仅作为示例,您可以根据您的具体需求和场景选择适合的腾讯云产品。

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

相关·内容

一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序

如果您是从头开始创建一个新组件,并忘记向NgModule添加一个新模块,但尝试将其添加到您的标记中,那么您的应用程序无法使用JS控制台中的下一个错误: Uncaught Error: Template...为了数据递给Angular组件,我们必须有输入。...让我们再往前走一步,并确保如果我们的应用程序状态包含多种类型的数据,我们每种类型的单独孤立状态进行组合。...这就是你如何效果集成到服务器加载数据的过程。但是我们仍然需要将其发回到我们的卡片创建中。让我们来做这件事吧。...当我们订阅中获取数据,您只需要实现该Remove效果。但我会把它留给你。 路由和模块 我们来谈谈我们的应用程序组合。

42.6K10

前端架构101:MVC的不足与Flux的崛起

,再刷新数据列表 负责为不同的 dom 元素绑定事件处理函数 不说大道理,和当下的 React 或者 Angular 组件相比,直接后果是这些模块是无法复用的。...包括但不限于:Redux,Mobx,Ngrx,Akita,React 等等。...而在他们的项目中最大的阻碍竟然是 MVC 架构 整个宣讲 Flux 过程中最令人诟病的就是这一张图,在我上面提到的批评声音中,最共同的声音就是它们以一种错误的方式实施了 MVC,所以才导致了他们的应用无法拓展...它们真正想表达的是这种双向的数据流架构会产生一定的负面效应。 ? 首先就像我在前几篇中提到的那样,客户端到后端到前端并没有“标准的 MVC” 一说。..., reducer, service, effect, 甚至在有的框架中还有更细化的 entity store, entity query。

1.4K20
  • react-redux 开发实践与学习分享

    在各大框架中均可使用,当然各个框架也有自己再度封装的状态管理库,如angularngrx,vue的vuex,而本文主要介绍的是react的react-redux。 示例介绍 ?...本次演示的示例,是一个微信注册页面,主要想通过react-redux实现的功能是,当输入不合法的注册信息,顶部出现错误提示信息,即: ?...,注册页面是通过子路由嵌套进来的,而又因为react的数据没有向上回溯的能力(即单项数据流),因此这里选择状态管理的方式去显示错误提示信息。...关联rudex和页面组件-connect 之前主页面的代码可以看到,错误信息的显示是由组件的props进来的,而主页面是如何获取相关的props的呢,答案是通过一个connect的函数。...比如现在主页面需要知道,当前redux仓库中是否显示错误提示的相关信息,有如下代码: const mapStateToProps = (state) => { return {

    90130

    一文总结 React Hooks 常用场景

    React 跳过子组件的渲染及 effect 的执行。...仅用到了 `someProp`) } 如果处于某些原因你无法把一个函数移动到 effect 内部,还有一些其他办法: 你可以尝试把那个函数移动到你的组件之外。...那样一来,这个函数就肯定不会依赖任何 props 或 state,并且也不用出现在依赖列表中了;万不得已的情况下,你可以 把函数加入 effect 的依赖但 把它的定义包裹 进 useCallback...这就确保了它不随渲染而改变,除非它自身的依赖发生了改变; 推荐启用 eslint-plugin-react-hooks 中的 exhaustive-deps 规则,此规则会在添加错误依赖发出警告并给出修复建议...三、useContext 用来处理多层级传递数据的方式,在以前组件树中,跨层级祖先组件想要给孙子组件传递数据的时候,除了一层层 props 往下透之外,我们还可以使用 React Context API

    3.5K20

    超实用的 React Hooks 常用场景总结

    React 跳过子组件的渲染及 effect 的执行。...仅用到了 `someProp`) } 如果处于某些原因你无法把一个函数移动到 effect 内部,还有一些其他办法: 你可以尝试把那个函数移动到你的组件之外。...那样一来,这个函数就肯定不会依赖任何 props 或 state,并且也不用出现在依赖列表中了;万不得已的情况下,你可以 把函数加入 effect 的依赖但 把它的定义包裹 进 useCallback...这就确保了它不随渲染而改变,除非它自身的依赖发生了改变; 推荐启用 eslint-plugin-react-hooks 中的 exhaustive-deps 规则,此规则会在添加错误依赖发出警告并给出修复建议...三、useContext 用来处理多层级传递数据的方式,在以前组件树中,跨层级祖先组件想要给孙子组件传递数据的时候,除了一层层 props 往下透之外,我们还可以使用 React Context API

    4.7K30

    fish_redux使用详解---看完就会用!

    widget组合式开发 计数器 效果图 [fish_redux中count] 这个例子演示,view中点击此操作,然后更新页面数据;下述的流程,在effect中把数据处理好,通过action中转传递给...reducer更新数据 view ---> action ---> effect ---> reducer(更新数据) 注意:该流程展示,怎么数据在各流程中互相传递 标准模式 main 这地方需要注意...无法数据源解析成Response类型 Effect buildEffect() { return combineEffects(<Object, Effect<ListState...getItemType返回的XxxxComponent的标识相对应,如果数据源搞成Object类型,映射到对应位置的item数据,会报类型不适配的错误 下述代码可做思路参考 class ListState...) 下面范例代码,处理数据操作直接在effect层处理,如需要更改数据,直接对ctx.state进行操作,涉及刷新页面的操作,统一调用onRefresh事件;对于一个页面有几十个表单的情况,这种操作

    2.8K43

    Angular v18 现已推出!

    此更改还包括一个具有合并功能的新调度程序,以避免连续多次检查更改。handleClick例如,当用户单击上面的按钮,由于调度程序的合并,Angular 仅运行一次更改检测。... v18 开始,事件调度在使用混合渲染为事件回放提供支持。大多数开发人员不会直接与事件调度进行交互,因此让我们研究一下为什么事件回放很有用。您可以在下面找到一个简单的电子商务网站的模拟。...想象一下,当页面正在加载并且尚未补水,用户想要将多个耳机添加到他们的购物车中。如果页面尚未冻结,因此不是交互式的,则所有用户事件都将丢失。... v18 开始使用事件调度Angular 开始记录用户事件。一旦应用程序被水化,事件调度就会重播它们,我们最终在购物车中有六件商品。...要预览页面上 Angular 水合的组件,您还可以启用叠加模式。如果你的应用有任何冻结错误Angular DevTools 将在组件资源管理器中可视化它们。

    23110

    redux-saga学习

    反向控制 在 takeEvery 的情况中,被调用的任务无法控制何时被调用, 它们将在每次 action 被匹配一遍又一遍地被调用。并且它们也无法控制何时停止监听。...这个 effect 是非阻塞型的,并且所有向下游抛出的错误(例如在 reducer 中),都不会冒泡回到 saga 当中。...它接受当前 state 和一些可选参数,并返回当前 Store state 上的一部分数据。 args: Array – 传递给选择器的可选参数,追加在 getState 后。...当并发运行 Effect ,middleware 暂停 Generator,直到以下任一情况发生: 所有 Effect 都成功完成:返回一个包含所有 Effect 结果的数组,并恢复 Generator...概括来说, Saga 内触发异步操作(Side Effect)总是由 yield 一些声明式的 Effect 来完成的,Effect是一个 普通js对象,包含一些将被 saga middleware

    2.7K10

    用AsyncAwait重建SwiftU的Redux-like状态容器

    (action) } func reducer(action) } Reducer在处理Action,经常会面对带有副作用(side effect)的情况,比如: •需网络查询获得数据后...,根据数据修改State•修改State后,需要向磁盘或数据库写入数据等 我们无法控制副作用的执行时间(有长有短),并且副作用还可能会通过Action继续来改变State。...1.0版本 在编写健康笔记1.0[2],我采用了SwiftUI与Combine编程[3]一书中提出的解决方式。 对于副作用采用Reducer中返回Command的方式来处理。...Command采用异步操作返回结果通过Combine回传给Store。 struct LoginAppCommand: AppCommand { //......_coreDataSave() { logDebug("更新Note出现错误") } return Just(AppAction.none).eraseToAnyPublisher

    1.9K20

    React Hook 的底层实现原理

    因此,通过深入理解React hooks的系统,我们就可以在遇到问题非常快的解决它们,甚至可以提前避免错误发生。...其余属性由useReducer()hook专门用于缓存已经调度操作和基本状态,因此在各种情况下,还原过程可以作为后备重复: · baseState - 将给予reducer的状态对象。...· baseUpdate- 最近的创建了最新baseState的调度操作。 · queue - 调度操作的队列,等待进入reducer。...这意味着,当你状态设置器传递到子组件,你可以改变当前父组件的状态,不需要作为一个不同的prop传递下去。...每个effect node应该具有以下模式 tag - 一个二进制数,它将决定effect的行为 create- 绘制后应该运行的回调 destroy- create()返回的回调应该在初始渲染之前运行

    2.1K10

    医疗数字阅片-医学影像-REACT-Hook API索引

    函数式更新 如果新的 state 需要通过使用先前的 state 计算得出,那么可以函数传递给 setState。该函数接收先前的 state,并返回一个更新后的值。...使用 useEffect 完成副作用操作。赋值给 useEffect 的函数会在组件渲染到屏幕之后执行。你可以把 effect 看作 React 的纯函数式世界通往命令式世界的逃生通道。...此规则会在添加错误依赖发出警告并给出修复建议。 依赖项数组不会作为参数传给 effect 函数。虽然概念上来说它表现为:所有 effect 函数中引用的值都应该出现在依赖项数组中。...虽然概念上来说它表现为:所有回调函数中引用的值都应该出现在依赖项数组中。未来编译器会更加智能,届时自动创建数组将成为可能。...虽然概念上来说它表现为:所有“创建”函数中引用的值都应该出现在依赖项数组中。未来编译器会更加智能,届时自动创建数组将成为可能。

    2K30

    React框架 Hook API

    函数式更新 如果新的 state 需要通过使用先前的 state 计算得出,那么可以函数传递给 setState。该函数接收先前的 state,并返回一个更新后的值。...使用 useEffect 完成副作用操作。赋值给 useEffect 的函数会在组件渲染到屏幕之后执行。你可以把 effect 看作 React 的纯函数式世界通往命令式世界的逃生通道。...此规则会在添加错误依赖发出警告并给出修复建议。 依赖项数组不会作为参数传给 effect 函数。虽然概念上来说它表现为:所有 effect 函数中引用的值都应该出现在依赖项数组中。...虽然概念上来说它表现为:所有回调函数中引用的值都应该出现在依赖项数组中。未来编译器会更加智能,届时自动创建数组将成为可能。...虽然概念上来说它表现为:所有“创建”函数中引用的值都应该出现在依赖项数组中。未来编译器会更加智能,届时自动创建数组将成为可能。

    15100

    Angular vs React 最全面深入对比

    如今,Angular和React这两个JavaScript框架可谓红的发紫,同时针对这两个框架的选择变成了当下最容易被问及或者被架构设计者考虑的问题,本文或许无法告诉你哪个框架更优秀,但尽量更多的角度去比较两者...如果在JSX标记中发生错误,编译器会立即报错而不是留待运行时出现莫名其妙的问题。这有助于开发人员快速排查错误以及避免其它愚蠢的错误,比如拼写错误。...它是Observer和Iterator模式与功能编程相结合的组合。RxJS允许您将任何东西视为连续的流,并对其进行各种操作,例如映射,过滤,拆分或合并。...要掌握它,您将需要了解不同类型的“可观察”,“主题”以及大约一百种方法和操作符 。 当您使用连续数据流(如Web套接字)工作很多的情况下,RxJS非常有用,但是对于其他任何东西来说似乎过于复杂。...@ngrx/store @ngrx/store是由Redux启发的Angular的状态管理库,基于由pure reducer进行突变的状态。

    3.8K70

    8分钟为你详解React、Angular、Vue三大框架

    这使得开发者可以选择任何一个库来完成诸如执行网络访问或本地数据存储等任务。这种情况也就决定了React技术在创建网页应用时标准无法统一。 ?...Flux架构下的React组件不应该直接修改传递给它的任何props,而是应该传递回调函数,这些回调函数可以创建由调度器发送的数据动作来修改存储仓库。...它可能包含如下数据: 用户ID, 目标用户ID, 以及USER_FOLLOWED_ANOTHER_USER枚举类型。 存储仓库,是一个数据模型,可以根据调度器接收到的数据动作来改变自己。...RxJS限制了状态的可见性和调试,但这些问题可以通过像ngReact或ngrx这样的反应式附加组件来解决。 支持Angular Universal,可以在服务器上运行Angular应用程序。...当在变换组件中的元素被插入或移除,会出现这样的情况: Vue会自动检测到目标元素是否应用了CSS变换或动画。如果有,CSS变换类将在适当的时间添加/删除。

    22.1K20

    聊一聊可组装框架( TCA )

    IdentifiedArray 确保了父组件中状态( State )中的某个序列属性切分成独立的子组件状态的系统稳定性。避免出现因使用 index 修改元素而导致的异常甚至应用崩溃的情况。...都是纯函数,对于保存数据、获取数据、网络连接、记录日志等等操作都将被视为副作用( TCA 中称之为 Effect )。...这意味着,如果我们想测试一个组件的完整功能,通常无法避免都要涉及异步操作的测试。...而对于 Redux-like 类型的框架来说,开发者通常无需在测试功能逻辑进行真正的副作用操作,只需让 Action -> Reducer -> State 的逻辑准确地运行即可。...不仅更加易懂,而且也避免了一些容易出现的组装错误( 因父子 Reducer 组装错误的摆放顺序所导致 )更好的 Reducer 性能新的声明方式,对 Swift 语言编译器更加地友好,享受到更多的性能优化

    1.8K20

    react源码中的hooks

    但是,它的各种神奇特性的不足是,一旦出现问题,调试非常困难,这是由于它的背后是由复杂的堆栈追踪(stack trace)支持的。...我确实非常深入地研究过了 React 的 hook 系统的实现,但是无论如何我仍无法保证这就是 React 实际的工作方式。...在我分析源码之前,首先我希望你牢记 effect hook 的一些属性:它们在渲染被创建,但是在浏览器绘制后运行。如果给出了销毁指令,它们将在下一次绘制前被销毁。它们会按照定义的顺序被运行。...useEffect() hook 调度effect —— 也被称为“被动 effect”,它基于这部分代码(也许我们要开始在 React 社区内使用这个术语了?!)。...== NoHookEffect) { // Mount}React 源码节选所以,基于我们刚才学习的关于 effect hook 的知识,我们可以实际操作外部向 fiber 插入一些 effect

    86410

    react源码之hooks

    但是,它的各种神奇特性的不足是,一旦出现问题,调试非常困难,这是由于它的背后是由复杂的堆栈追踪(stack trace)支持的。...我确实非常深入地研究过了 React 的 hook 系统的实现,但是无论如何我仍无法保证这就是 React 实际的工作方式。...在我分析源码之前,首先我希望你牢记 effect hook 的一些属性:它们在渲染被创建,但是在浏览器绘制后运行。如果给出了销毁指令,它们将在下一次绘制前被销毁。它们会按照定义的顺序被运行。...useEffect() hook 调度effect —— 也被称为“被动 effect”,它基于这部分代码(也许我们要开始在 React 社区内使用这个术语了?!)。...== NoHookEffect) { // Mount}React 源码节选所以,基于我们刚才学习的关于 effect hook 的知识,我们可以实际操作外部向 fiber 插入一些 effect

    34330

    react源码中的hooks_2023-02-21

    但是,它的各种神奇特性的不足是,一旦出现问题,调试非常困难,这是由于它的背后是由复杂的堆栈追踪(stack trace)支持的。...我确实非常深入地研究过了 React 的 hook 系统的实现,但是无论如何我仍无法保证这就是 React 实际的工作方式。...在我分析源码之前,首先我希望你牢记 effect hook 的一些属性: 它们在渲染被创建,但是在浏览器绘制后运行。 如果给出了销毁指令,它们将在下一次绘制前被销毁。 它们会按照定义的顺序被运行。...useEffect() hook 调度effect —— 也被称为“被动 effect”,它基于这部分代码(也许我们要开始在 React 社区内使用这个术语了?!)。...== NoHookEffect) { // Mount } React 源码节选 所以,基于我们刚才学习的关于 effect hook 的知识,我们可以实际操作外部向 fiber 插入一些 effect

    47370

    react源码分析之hooks

    但是,它的各种神奇特性的不足是,一旦出现问题,调试非常困难,这是由于它的背后是由复杂的堆栈追踪(stack trace)支持的。...我确实非常深入地研究过了 React 的 hook 系统的实现,但是无论如何我仍无法保证这就是 React 实际的工作方式。...在我分析源码之前,首先我希望你牢记 effect hook 的一些属性: 它们在渲染被创建,但是在浏览器绘制后运行。 如果给出了销毁指令,它们将在下一次绘制前被销毁。 它们会按照定义的顺序被运行。...useEffect() hook 调度effect —— 也被称为“被动 effect”,它基于这部分代码(也许我们要开始在 React 社区内使用这个术语了?!)。...== NoHookEffect) { // Mount } React 源码节选 所以,基于我们刚才学习的关于 effect hook 的知识,我们可以实际操作外部向 fiber 插入一些 effect

    48220

    Redux助力美团点评前端进阶之路

    作为前端工程师,怎样把数据递给用户,并把用户的想法意图转化为数据,这是我们要解决的本质问题。 人脑是无法直接读懂数据的,于是我们有了UI,UI成为了人与数据之间的桥梁。...总结 应用中有多个数据源,维护多个数据源之间的一致性变得非常困难。 因为多个数据源之间是有关联的,导致应用内会有多处代码来操作同一处数据,预测一个代码带来的数据变更愈发困难。...页面经过多次迭代,代码无法维护,程序员又得加班重构。 中世纪:React(2003) 因此我2005年之后的这段时期定义为“中世纪”,无尽的BUG,无尽的黑暗。...所以要依靠React组件之间的通信去同步多个state之间的数据变得非常痛苦。 React没有对数据变更进行约束。 在UI渲染方面React做得很好,没有DOM操作,与真实DOM隔离。...每个异步action都有一个effect,异步操作都会写在effect里面。除了effect还有子action,子action必须是同步的action。

    1.5K40
    领券