1

我有一个场景,我在用户页面上有一个用户列表。每个用户都有自己的应用列表,当用户点击时,会显示相应的应用列表。我想使用 ngrx 实体适配器,但首先我需要设计我的状态。一种选择是:

const state = {
   usersState: {
      entities: {},
      apps: {
         entities: {}
      }
   }
}

另一个是这样的:

const state = {
   usersState: {
      entities: {},
   },
   appsState: {
      entities: {}
   }
}

由于用户页面之外没有应用程序,所以第一个选项对我来说更有意义,但是使用这种方法我有一个问题:如何使用addAll 适配器的方法?据我了解,如果我错了,请纠正我,addAll接受一个表示项目列表的有效负载作为第一个参数,状态作为第二个参数,并以某种方式将它们合并在一起。你能举例说明如何使用适配器更新嵌套状态吗?或者,也许解决方案是选择第二种选择?谢谢。

4

1 回答 1

1

适配器只负责一个实体,据说我认为可以管理子状态。为此,您应该创建两个适配器,它看起来像这样:

return {
  ...state,
  apps: {
    entities: appAdapter.addAll(payload.apps, state.apps)
  }
}

旁注,你应该尽量保持你的状态 normalized

于 2019-02-01T17:38:07.377 回答