ngrx实体适配器addAll和嵌套状态

时间:2019-02-01 16:51:31

标签: ngrx ngrx-entity

在一种情况下,我在用户页面上有一个用户列表。每个用户都有自己的应用程序列表,单击某个用户时,将显示相应的应用程序列表。我想使用ngrx实体适配器,但是首先我需要设计状态。一种选择是:

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

另一个是这个

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

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

1 个答案:

答案 0 :(得分:0)

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

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

旁注,您应尽量保留state normalized