NGXS:将操作分成单独的文件

时间:2019-09-17 09:25:49

标签: javascript angular redux action ngxs

我正在Angular 8应用中使用NGXS。当前,所有动作处理程序(带有@Action装饰器的函数)都在state.ts中实现,使得文件的读取方式变得很长。我设法使用@Selector([StateName])语法将选择器分隔在另一个文件中。但是我不能使用@Actions来完成这项工作。从概念上讲,我将能够在5个不同的文件中移动20个左右的动作。

如何使用NGXS做到这一点?

感谢所有答案。

2 个答案:

答案 0 :(得分:1)

我发现减轻该问题的最佳方法是将状态分解为较小的块,使其更易于管理和读取,状态结构可以分解为较小的部分还是全部互连在一起?也许考虑使用子状态? https://www.ngxs.io/advanced/sub-states

答案 1 :(得分:0)

您可以将逻辑移至函数并从方法中调用这些函数吗?

// app.state
@State<AppStateModel>({
    name: 'app',
    defaults: defaultAppState,
})
export class AppState {

    @Action(AppInitialized)
    testAction(context: StateContext<AppStateModel>, action: AppInitialized) {
        return testActionFromOtherFile(context, action);
    }
}

// test.action.ts
export function testActionFromOtherFile(context: StateContext<AppStateModel>, action: AppInitialized) {
    // do stuff
}