我如何在 RxJS 中调用一组动作?
How can I call an array of actions in RxJS?
我有许多重置操作需要立即触发。目前我正在使用 mergeMap 来调用如下操作类型。但是,我认为有一种方法可以用字符串数组替换类型对象,但我似乎无法弄清楚。有人可以帮忙吗?
const resetModuleEpic = action$ =>
action$.pipe(
ofType('RESET_MODULE'),
mergeMap(() =>
of(
{
type: 'RESET_IMAGE'
},
{
type: 'RESET_CATEGORY'
},
{
type: 'RESET_FILTERS'
}
)
)
);
我相信像下面这样的事情是可能的,但做错了:
const resetModuleEpic = action$ =>
action$.pipe(
ofType('RESET_MODULE'),
merge(['RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS'])
);
你在 merge
中所做的只是获取数组中的每一项并重新发出它,因此它只会输出纯字符串而不是动作。
显然有多种方法可以实现您想要的效果。例如,您可以使用 of().map()
的组合并将每个字符串转换为操作:
mergeMap(() => of('RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS').pipe(
map(type => ({ type })),
))
您的示例应该可以运行,可能错误出在您代码中的其他地方。
我已经添加了example at stackblitz。我个人更喜欢 from
而不是 of
,但无法推理。
我有许多重置操作需要立即触发。目前我正在使用 mergeMap 来调用如下操作类型。但是,我认为有一种方法可以用字符串数组替换类型对象,但我似乎无法弄清楚。有人可以帮忙吗?
const resetModuleEpic = action$ =>
action$.pipe(
ofType('RESET_MODULE'),
mergeMap(() =>
of(
{
type: 'RESET_IMAGE'
},
{
type: 'RESET_CATEGORY'
},
{
type: 'RESET_FILTERS'
}
)
)
);
我相信像下面这样的事情是可能的,但做错了:
const resetModuleEpic = action$ =>
action$.pipe(
ofType('RESET_MODULE'),
merge(['RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS'])
);
你在 merge
中所做的只是获取数组中的每一项并重新发出它,因此它只会输出纯字符串而不是动作。
显然有多种方法可以实现您想要的效果。例如,您可以使用 of().map()
的组合并将每个字符串转换为操作:
mergeMap(() => of('RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS').pipe(
map(type => ({ type })),
))
您的示例应该可以运行,可能错误出在您代码中的其他地方。
我已经添加了example at stackblitz。我个人更喜欢 from
而不是 of
,但无法推理。