吴XS。 store.dispatch() 和 context.dispatch() 之间的区别?

NgXS. DIfference between store.dispatch() and context.dispatch()?

在 NgXS 中,我有两种方法可以触发从一个状态到另一个状态的事件:

  1. 从全局存储调用 dispatch()
  2. 从 State 中的 StateContext 对象调用 dispatch()

这两种方式有什么区别?哪种方法更好,为什么? 例如

//== state action

@Action()
doAny(context: StateContext<MyContextModel>, payload: any): void {
  context.dispatch(new AnotherStateAction());
  // this._store.dispatch(new AnotherStateAction()); this code will do the same
}

文档:https://www.ngxs.io/concepts/state#dispatching-actions-from-actions

据我了解,这些方法使用 InternalStateOperations 服务的相同内部方法:

  • here and here for StateContextFactory 创建 StateContext 个实例。
  • here and here 对于 Store 本身。

也就是说,_store 成员显然被视为私有成员(即 API 对于外部使用是不可靠的,即使对于状态 class 方法也是如此)所以我建议使用 StateContext调度实例。