问题标签 [ngrx-reducers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 尝试将reducer添加到app.module中的ngrx存储时出现错误“参数类型'action'和'action'不兼容'
我一直在尝试创建一个示例 TODO 应用程序来学习 ngrx,我的应用程序具有诸如 ADD_TASK、REMOVE_TASK、UPDATE_TASK 和 LIST_TASk 之类的“操作”,并且它具有一个减速器函数,该函数根据操作类型对状态进行操作。请在下面找到我的应用程序操作和减速器代码。
任务操作.ts
taskreducer.ts
当我尝试添加 StoreModule 时,我遇到了问题。
应用模块.ts
当我尝试将“tasksreducer”添加到 storemodule 时,出现以下错误。有谁能够帮我?
错误:src/app/app.module.ts:23:5 - 错误 TS2322:类型 '(state: Task[] | undefined, action: TASKSActionsType) => Task[]' 不可分配给类型 'ActionReducer<Task[ ],动作>'。参数“action”和“action”的类型不兼容。类型“Action”不可分配给类型“TASKSActionsType”。“Action”类型中缺少属性“payload”,但在“LISTTASk”类型中是必需的。
angular - ngRx Store - Reducer 返回未定义 - store.select() 未定义
这是我第一次使用 ngRx Store,我实现了我的第一个效果..
什么工作正常:
- 与后端通信
- 正在后端执行操作(删除、添加、获取)
- 有效载荷从效果到达减速器(记录下来以确保)
所以我的问题是我无法从减速器中获取数据。如果我从组件中的存储中选择数据,则会在组件中获得未定义的数据。我点击了效果中的数据,数据被明确传递了。还将数据记录在减速器中 - 它就在那里。但是当它返回时,它返回未定义。ReDux Devtools 记录一切正常。最后但并非最不重要的一点.. 即使使用固定值,状态也不会更新,例如用于加载的 true/false 布尔值。
乐代码:
// 我得到未定义的地方
// 减速器
我非常感谢你的帮助:)
ngrx - 错误 TS2322:类型 '{ auth: (state: auth.State | undefined, action: All) => auth.State; }' 不可分配给类型 'ActionReducer';
将 reducer 注册到 app.module.ts 时出错。错误 -> 错误:src/app/app.module.ts:25:26 - 错误 TS2322:类型 '{ auth: (state: auth.State | undefined, action: All) => auth.State; }' 不可分配给类型 'ActionReducer<unknown, Action>'。类型 '{ auth: (state: State | undefined, action: All) => State; }' 不提供与签名 '(state: unknown, action: Action): unknown' 的匹配。
该项目的 GIT 链接:https ://github.com/Shubhangi238/LoginApp.git
angular - 在 app.module 中注册 reducer 显示角度 ngrx 状态管理中的错误
我正在 Angular 12 和最新的 NgRx 库中创建一个应用程序,用于教程目的。我有以下模型、动作、reducer 和应用程序状态类。
模型
行动
减速器
应用状态
现在我想在app.module.ts文件中导入减速器。这是代码:
但是在app.module.ts文件中,导入 reducer 会导致错误。错误如下所示:
错误:src/app/app.module.ts:19:29 - 错误 TS2322:类型 '(state: Tutorial[] | undefined, action: Actions) => Tutorial[]' 不可分配给类型 'ActionReducer<Tutorial[ ],动作>'。参数“action”和“action”的类型不兼容。类型“动作”不可分配给类型“动作”。“Action”类型中缺少属性“payload”,但在“RemoveTutorial”类型中是必需的。
19 StoreModule.forRoot({教程:reducer}),~~~~~~~~
src/app/_actions/tutorial.actions.ts:20:17 20 构造函数(公共负载:数字){} ~~~~~~~~~~~~~~~~~~~~~~ 'payload'在这里声明。
由于我是 NgRx 的新手,我不明白为什么会出现问题。请帮我解决问题。
angular - 如何通过 Angular 中的 NGRX 减速器使用数组更新状态?
我想使用 ngrx 减速器更新我的状态,但我得到一个编译错误。
对于上下文。用户在表单上提交工作日志,我希望将此工作日志添加到状态的工作日志数组中。
这是我的状态的结构:
减速机:
我想我在减速器的最后一行有一些错误。有什么帮助吗?
angular - 为什么使用 reducerManager 会给我不正确的状态
我reducerManager
用来在全局对象中添加我的减速器。
例如,如果我写
const reducer = createReducer( initialState, on( doSomething, state => state ) );
然后:
reducerManager.addReducer( 'reducer', reducer );
在我的组件中使用 select 我需要写:
val:Observable<any> = this.store.select( state => state.reducer.val );
我的问题是为什么我不能只写:
val:Observable<any> = this.store.select( state => state.val );
这是使用减速器管理器的含义还是我出错了?
我已经向我的经理添加了许多减速器,并且在将名称写为状态属性以获得我的最终值之后,我总是得到相同的存储状态(顺便说一句,这些状态是共享的,它的目的是什么?)