在ngxs中重置状态

Posted

技术标签:

【中文标题】在ngxs中重置状态【英文标题】:Resetting state in ngxs 【发布时间】:2018-11-18 01:33:55 【问题描述】:

当我向我的状态添加一些新数据时,新数据不会出现在我的日志或 DevTool Ui 中。

是否有一种机制可以重置状态,以便数据出现。似乎某些缓存中的旧数据仍在显示。

谢谢

【问题讨论】:

请提供详细信息(例如示例代码)来描述您所做的事情? 【参考方案1】:

在 v3.1 中,商店中有一个 reset 函数,可让您重置状态,请参阅文档 here

【讨论】:

【参考方案2】:

我更喜欢使用这个重置插件; https://github.com/ng-turkey/ngxs-reset-plugin

这是一个 ngxs 插件,易于实现。

【讨论】:

【参考方案3】:

对于状态重置,我尝试通过插件 (https://ngxs.gitbook.io/ngxs/advanced/meta-reducers) 使用“meta-reducer”概念,但我无法将每个切片的状态重新初始化为默认值。

【讨论】:

【参考方案4】:

您可以简单地将操作添加到您的app.state.ts 文件中,如下所示

重置状态的动作

@Action(ResetAppState)
resetState(ctx: StateContext<AppStateModel>): Observable<AppStateModel> 
   return of(ctx.getState()).pipe(
      map(currentState => 
         ctx.patchState(/* enter initial/reset values here */);
         return currentState;
      )
   );

您还必须将操作添加到app.action.ts 文件中

export class ResetAppState 
  static readonly type = '[AppState] Reset App State';

现在您可以轻松地在 servicecomponent 中分派操作以重置 NGXS 状态,如下所示:

constructor(private store: Store) 

yourMethod(): void 
    this.store.dispatch(new ResetAppState());

【讨论】:

以上是关于在ngxs中重置状态的主要内容,如果未能解决你的问题,请参考以下文章

ngxs:在 Action 中访问不同的状态

ngxs、redux 开发工具显示之前的状态

NGXS 状态不变

NGXS updateItem 状态算子

NGXS状态管理:在调用操作时更改状态并将其保存到DB

NGXS @Select 与状态模型一起使用