如何从商店中删除功能

how to remove feature from store

我的主模块(全局)有一个应用程序商店。

但是,我有另一个模块,它是惰性的,并且包含一个特色商店。我们将其命名为 users 模块(使用 /users 路由)。

  1. 当我访问主页上的应用程序(应用程序模块)时,将加载应用程序商店。
  2. 当我导航到 /users 路线时,将加载用户模块,以及用户商店(特色商店)
    • 此刻,我的商店由/app-store/users-store计算。
  3. 我导航外部用户,我想从我的状态中删除 /users-store。

我尝试在我的主要用户组件的 ngOnDestroy 中重新初始化用户状态(因为我不知道如何删除它),但没有触发该操作。

ngOnDestroy() {
    this.store.dispatch(fromFeature.resetStoreAction());
}

我需要它,因为模块是按角色访问的,我不想在内存中保持users-store无用。

您可以使用 removeReducer 删除状态叶子,如果您在执行此操作时用户再次导航到该页面,您可能必须手动重新添加该功能。 有关更多信息,请参阅我的博客 post An experiment, using the global NgRx Store as a local store

就我个人而言,如果状态绑定到组件的生命周期,我不明白为什么需要删除此状态 - 我认为 NgRx 组件商店会更好地满足您的需求。 https://ngrx.io/guide/component-store

 constructor(
    private reducers: ReducerManager,
  ) {
  }

ngOnDestroy() {
  this.reducers.removeReducer('feature-name');
}