gpt4 book ai didi

angular - 如何通过 ngrx 存储中的单个操作更新多个 reducer 的状态?

转载 作者:行者123 更新时间:2023-12-04 03:12:15 26 4
gpt4 key购买 nike

我的应用程序中有多个 reducer,它们组合在 app.reducers.ts 中。当我的操作发生时,一个 reducer 的状态应该使用另一个 reducer 当前状态的单个值进行更新(因此计划外交付将被安排),然后从第二个 reducer 的状态中删除该值。这是我可以删除它的方法,但在执行此操作之前我需要更新其他状态。

case UNPLANNED_ACTIONS.REMOVE_UNPLANNED_DELIVERY:
return Object.assign({}, state, {
deliveries: state.deliveries.filter(delivery => delivery.deliveryId !== payload.deliveryId)
});

从应用程序的 Angular 来看,调用 2 个操作非常糟糕。所以我需要以某种方式在更高层次上处理这个问题。

最佳答案

您的商店可以有多个 reducer ,每个 reducer 单独作用于操作。

例如,你可以这样定义它们

export function reducer(
state = initialState,
action: fromMyStoreActions.DeliveryAction
): AppState{

switch (action.type) {
case UNPLANNED_ACTIONS.REMOVE_UNPLANNED_DELIVERY:
return Object.assign({}, state, {
deliveries: state.deliveries.filter(delivery => delivery.deliveryId !== payload.deliveryId)
});
...
}

// Another Reducer
export function reducer(
state = initialState,
action: fromMyStoreActions.DeliveryAction
): AppState{

switch (...)
....

然后将所有reducer传递给模块中的ngrx

StoreModule.forRoot(reducers)

For a good example, see this repo

关于angular - 如何通过 ngrx 存储中的单个操作更新多个 reducer 的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44115329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com