访问ngrx中reducer中的其他状态部分

Sag*_*iri 6 redux ngrx angular

如果另一个状态部分已更改,我需要删除状态值。我应该如何从 NgRx 中的减速器访问其他存储部件?

我的商店架构:

a: {...}
b: {...}
Run Code Online (Sandbox Code Playgroud)

我需要从具有“a”特征存储的减速器访问在另一个减速器中初始化的“b”特征存储。

dad*_*kom 4

您可以使用@ngrx/effects 解决该问题。

效果会监视操作流并过滤操作并对其做出反应。

您的操作效果中的过滤器会更改相关部分并分派另一个操作来更改商店的其他部分。(只需返回新的action即可生效)

@Injectable()
export class MovieEffects {

  loadMovies$ = createEffect(() => this.actions$.pipe(
    ofType(ActionsOfA.ChangeAction),    // which changes the related part
    map(action=>ActionsOfB.RemoveOtherPart  // dispatch
    )
  );

const aReducer = createReducer(initialState,
  on((ActionsOfA.ChangeAction, {payload}), state => ({...state, a: payload}))
);

const bReducer = createReducer(initialState,
  on(ActionsOfB.RemoveOtherPart, state => ({...state, b:{} )
);
Run Code Online (Sandbox Code Playgroud)

如果您需要的话,在过滤的操作中还有有效负载。