如何管理处于Redux / ngrx状态的实体?

时间:2018-07-11 22:53:31

标签: redux ngrx state-management

我们一直在使用public Mono<RoomData> findAndModifyUserSpectate(String roomId, String requestUserId, boolean isSpecator){ Query query = new Query(); query.addCriteria(Criteria.where("id").is(roomId).and("userRoomDatas") .elemMatch(Criteria.where("userId").is(requestUserId))); Update update = new Update(); update.set("userRoomDatas.$.isSpectator : " + isSpecator, new Query(Criteria .where("userRoomDatas").elemMatch(Criteria.where("userId").is(requestUserId)))); FindAndModifyOptions options = FindAndModifyOptions.options(); options.returnNew(true); return template.findAndModify(query, update, options, RoomData.class); } 进行应用程序中的状态管理。由于ngrxngrx遵循相同的状态管理原则,因此这个问题适用于两者。

对于状态管理,我们一直使用redux库对来自服务器的所有传入数据进行规范化。关于如何在不同状态片之间共享normalizr,我们有以下问题。例如,

entities

sliceA和sliceB都包含一个称为// app state { sliceA: sliceAState, // corresponds to feature module A, handled by reducerA sliceA: sliceBState, // corresponds feature module B, handled by reducerB } 的特定实体list。现在正确的方法是什么

  • 在两个状态切片中维护location实体-将来可能还会有其他状态切片也需要相同的实体。
  • 维护location,但这需要跨模块进行交叉引用-还请注意,我们使用延迟加载来加载不同的功能模块。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

保持相同的状态切片,但这需要在模块之间进行交叉引用-还请注意,我们使用延迟加载来加载不同的功能模块。

为了遵守single source of truth的原则,这将是您最好的选择。

如果您开始在多个位置维护相同的数据,则每次数据更改时都需要更新多个数据源。如果只有一个真相来源,则可以消除商店中出现不一致情况的机会。