(nx) 特征库可以访问全局状态吗?
Can (nx) feature libraries access the global state?
根据 Nx 文档,应用程序的功能仍应移至库中。当然,我可以向这些库中的每一个添加功能级状态,但是如果我想从功能库访问的全局 AppState 上有一个 属性 怎么办?我无法从 apps/ 目录导入任何内容。
有没有办法与功能库共享状态,或者我应该将我的功能移回 apps/ 目录?
关键是有 feature reducers 和 selectors。
但是,请务必了解没有特征存储。
只有 一个全局存储 具有所有减速器的状态。
因此 feature reducers 和 selectors 与全局存储和全局状态一起工作,并且可以完全访问它。
例如,如果两个不同的模块调用 StoreModule.forFeature('test', testReducer)
- 两个模块共享状态,尽管它可能给人的印象是每个模块都有自己的 test
功能状态。
我的解决方法是避免全局存储状态。相反,我创建了一个专用的无组件模块来定义 forFeature()
状态、选择器、缩减器、效果等。然后我使用 forRoot().
从专用模块导出所有这些
现在我可以将这个专用的功能状态模块导入到独立的应用程序功能模块中。正如@satanTime 指出的那样,这个状态不会被复制或替换,因为它是通过 forFeature()
.
添加到全局状态的
根据 Nx 文档,应用程序的功能仍应移至库中。当然,我可以向这些库中的每一个添加功能级状态,但是如果我想从功能库访问的全局 AppState 上有一个 属性 怎么办?我无法从 apps/ 目录导入任何内容。
有没有办法与功能库共享状态,或者我应该将我的功能移回 apps/ 目录?
关键是有 feature reducers 和 selectors。
但是,请务必了解没有特征存储。
只有 一个全局存储 具有所有减速器的状态。 因此 feature reducers 和 selectors 与全局存储和全局状态一起工作,并且可以完全访问它。
例如,如果两个不同的模块调用 StoreModule.forFeature('test', testReducer)
- 两个模块共享状态,尽管它可能给人的印象是每个模块都有自己的 test
功能状态。
我的解决方法是避免全局存储状态。相反,我创建了一个专用的无组件模块来定义 forFeature()
状态、选择器、缩减器、效果等。然后我使用 forRoot().
现在我可以将这个专用的功能状态模块导入到独立的应用程序功能模块中。正如@satanTime 指出的那样,这个状态不会被复制或替换,因为它是通过 forFeature()
.