我应该为单独的页面创建状态吗?

Should I create a state for a separate page?

我第一次使用 angular 和 ngxs 创建应用程序。我创建了用于共享数据的商店。但是对于一些不共享数据的页面,例如编辑一个特殊的项目,我是否应该为它创建一个特殊的商店,比如 item-edit.state.ts?

我找了很多 ngxs 的例子,但我自己无法回答这个问题。

根据应用程序的大小,您可以拥有全局状态并为页面创建单独的选择器。例如,您可以像下面这样 item-edit.selectors.ts


export class ItemEditingSelectors {
  // uses the global state MyState
  @Selector([MyState])
  static viewModel(state: MyStateModel) {
    // do your selection logic here
  }
}

我个人喜欢让选择器执行繁重的逻辑,将我的状态解析为 pages/components 需要的状态,这样您就可以利用它们的记忆。

这种方法的一个优点是您可以将 page/components 与状态的形状分离,从而在需要时更容易对状态进行更改,而不会对消费者产生重大影响 page/components。