如何在动作开始和存储更新时进行拦截?

问题描述

我正在使用NGRX。我有很多动作,我想知道什么时候开始动作以及何时更新商店。

这个想法是要有一种集中的方式来获取信息,而不管执行什么动作。我需要知道商店何时更新而无需订阅所有选择器。

updateTitle ---->标题已更新。

最好, 曼德斯

解决方法

您必须明确定义动作

例如

import { createAction,props } from "@ngrx/store";    

export enum HeaderActionTypes {
  UpdateTitle = '[Title] Update Title',UpdateTitleSuccess = '[Title] Update Title success'
}

export const UpdateTitle = createAction(HeaderActionTypes.UpdateTitle)
export const UpdateTitleSuccess = createAction(HeaderActionTypes.UpdateTitleSuccess,props<{ payload: string }>())

在reducer中,您可以捕获动作并更新状态

例如

import { createReducer,on } from "@ngrx/store";

export const initialState = {
   ... // Additional state properties can go here. 
   updatingTitle: false,title: ''
}


export const reducer = createReducer(
  initialState,on(HeaderActionTypes.UpdateTitle,(state) => {
    return {
      ...state,updatingTitle: true
   }
  }),on(HeaderActionTypes.UpdateTitleSuccess,(state,{ payload }) => {
    return {
      ...state,updatingTitle: false,title: payload
   }
  })
)

如果title正在通过async通话进行更新,则您必须添加一个Effect

Effect,请查阅文档。

Selectors,使用选择器读取状态并将其绑定到UI。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...