问题标签 [ngrx-store]

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.

0 投票
2 回答
2504 浏览

angular - 多个 NGRX 减速器实例的选择器

我有一个用于搜索的减速器,并意识到它需要用于多个不相关的搜索组件。因此,通过查看 Redux 文档,我发现了高阶 reducer 的概念(http://redux.js.org/docs/recipes/reducers/ReusingReducerLogic.html#customizing-behavior-with-higher-order-reducers)(meta ngrx 中的减速器)并用它来创建我的搜索减速器的 2 个“实例”。然后我在同一个文档中发现这似乎可以与选择器一起使用,但实际上在记忆化方面存在问题(http://redux.js.org/docs/recipes/ComputingDerivedData.html#accessing-react-props-in-选择器)。那篇文章引用了一个名为“mapStateToProps”的函数,它似乎是将存储数据连接到组件的 React 特定方式(如果我理解正确的话......)。

在 ngrx 中是否有等价物,或者是否有另一种方法可以创建这些选择器来处理不同的 reducer 实例?

下面是一个基于我想要完成的 ngrx 示例应用程序的稍微做作的示例:

减速器/searchReducer.ts:

减速器/index.ts:

我相信上面的 getSearchIds 选择器需要能够以某种方式指定它正在访问的搜索 Reducer 的哪个实例。(奇怪的是,在我的代码中它似乎可以工作,但我不确定它是如何知道从哪个中选择的,我认为它存在 Redux 文档中讨论的记忆问题)。

0 投票
1 回答
803 浏览

angular - ChangeDetectionStrategy.OnPush 和重新渲染/domchanges

我试图找出我应该如何结合使用 ngrx-store 和 OnPush changedetection 策略。

假设我想在我的集合中设置一个选定实体的类。
如果我做这样的事情:

或者如果我在减速器中设置 isSelected 属性,它会创建我所有实体的克隆。如果我这样做的话,会有大量的收藏:

它很慢!

但是,如果我不订阅这样的选择更改:

改变

并创建一个获取选定对象的函数:

它很快

因此,如果流发生更改,使用流的组件似乎需要大量时间来检测 domchanges,即使没有。

那是对的吗?这意味着您必须非常清楚您在商店中所做的更改以及您应该在组件中执行的操作。

0 投票
4 回答
4688 浏览

ngrx - 在 @ngrx/store 4.0 中提供 root reducer

在 @ngrx/store 2.0 中,我们可以将根 reducer 作为一个函数提供,然后我们在应用程序中拆分我们的逻辑。在我更新到@ngrx/store 4.0 之后,我不能再使用这个功能了,我可以看到减速器需要是一个减速器的映射,它将在状态的相同键下创建对象。有没有办法在@ngrx/store 4.0 中使用旧的行为?自己的方式。此外,应用程序被拆分为多个延迟加载的路由,这些路由在某些情况下会重用来自另一个功能的数据。

我需要reducers成为一个获取完整状态并将其分派给正确减速器的函数,有没有办法实现这种行为?

0 投票
2 回答
1181 浏览

angular - Angular 4,ngrx\store Plunker - TypeError: store_1.StoreModule.provideStore 不是函数

我正在尝试创建一个 Angular 4 plunker,其中包括 ngrx\store 最新版本: https ://embed.plnkr.co/cr4rCJ0hRVMwuLzKe4mg/

为了使用 ngrx\store 我在config.js文件中添加了这一行:

出于某种原因,我收到此错误:

有人可以帮忙吗?

0 投票
0 回答
634 浏览

angular - NGRX 4 商店没有使用任何模型

我正在尝试使用没有类似模型的 ngrx 存储状态

但是当它返回未定义时,我现在不知道如何在任何我厌倦了搜索它时使用动作有效负载,请帮助

我总是不确定请帮助

使用 NGRX

在组件中创建了一个状态

行动

效果

减速器

应用程序模块

减速机厂

0 投票
2 回答
996 浏览

angular - 从 ngOnInit 调度操作时的 ExpressionChangedAfterItHasBeenCheckedError

我订阅ngrx存储在 my 的构造函数中AppComponent

然后,我在其他组件的ngOnInit方法中调度一个动作,如下所示:

而这种互动的结果是个ExpressionChangedAfterItHasBeenCheckedError例外。如果我将该dispatch调用移至子组件的构造函数,则不会引发任何错误,但我想知道这是否只是偶然。另外我不认为把它放在构造函数体内是一个好主意。

我的每个组件都需要进行此store.dispatch调用 - 如您所见,其目的是生成一个子菜单数据,该数据将因页面而异。如何解决这个异常?

0 投票
1 回答
121 浏览

angular - 在我的组件中实现 Ngrx Store 服务的问题

在用户尝试帮助解决有关该帖子的问题后:我的 stackoverflow 旧帖子我现在正在尝试使用Ngrx 商店 github实现 Ngrx 商店,以帮助我解决多个输入/输出事件。

就在我的构造函数之后,我有一个错误:

counter不可分配给类型参数(state: Appstate) => boolean

child.ts

计数器.ts

}

0 投票
1 回答
6103 浏览

angular - 角度 2 在页面重新加载时丢失数据

我像这样从 NGRX/store 获得预订列表,数据正确输入,但在页面重新加载时消失。我必须更改路线才能将其取回。

不确定这是否足以说明问题的代码。

在我的身份验证服务中

我正在使用 Firebase 并订阅 authState 更改。当用户登录时,我发送一个操作来更新商店,我只使用 authState.profile 来过滤用户的预订并且所有工作正常。我在 ngOnInit() 上设置了 observable reservations$。

0 投票
2 回答
1123 浏览

angular - Angular ngrx 商店了解 Reselect 的返回值

当使用 reselect 和来自 ngrx 的 store.select() 时,我试图将我的头脑围绕在引擎盖下发生的事情。

我知道 select() 方法希望您从要返回的状态返回该片段。例如:

使用 Reselect 它会是这样的:

我试图了解最后一块发生了什么:

fromRoot.getIsLoading返回一个值还是一个函数?

0 投票
5 回答
23624 浏览

angular - 升级@ngrx/Store 时,类型“操作”上不存在属性“有效负载”

@ngrx/store我的Angular (4.x) 应用程序中有该软件包,并且正在从 v 2.2.2 -> v 4.0.0升级。我可以看到迁移说明说:

payload 属性已从 Action 接口中移除。

然而,他们给出的例子似乎完全违反直觉(在我看来......)。

我有一个减速器功能,如下所示:

正如预期的那样,现在会引发打字稿错误:

[ts] 类型“操作”上不存在属性“有效负载”

但是我从迁移指南中不知道这也应该改变。有任何想法吗?