我正在将redux-observable与rxjs的tap运算符配合使用来初始化ipcRenderer事件。在此之前,我想调度另一个动作。问题是如何正确地将有效载荷传递给分接运算符? -
注意:我想将tap操作符保留在序列的末尾
我试图在动作的有效载荷中传递它,但这不是我想要的。.检查示例
import { ipcRenderer } from 'electron';
import { map, tap, ignoreElements } from 'rxjs/operators';
import { ofType } from 'redux-observable';
import { pipe } from 'rxjs';
import { togglePackageLoader } from 'models/ui/actions'
import { viewPackageStart} from '../actions';
// I want to pass payload to tap
/* togglePackageLoader returns {
type: 'TOGGLE_LOADER',
payload: {
loading: true,
options: {
opt1: value1,
}
}
}
// i want to avoid passing options to toggleLoader payload..
*/
const viewPackageEpic = pipe(
ofType(viewPackageStart.type),
map(({ payload }) => togglePackageLoader({
loading: true,
options: payload
})),
tap(({ payload: { options } }) => {
ipcRenderer.send('npm-view', options)
}),
ignoreElements()
);
export { viewPackageEpic };
我希望先调度toggleLoader,然后进行ipcRenderer调用
答案 0 :(得分:0)
我找到了适合我需要的解决方案。我创建了另一个捕捉相同类型的史诗。在点击操作符之后使用ignoreElements。
const viewPackageEpic = pipe(
ofType(viewPackageStart.type),
map(() => updatePackageLoader({
loading: true
})),
);
const viewPackageLoaderEpic = pipe(
ofType(viewPackageStart.type),
tap(({ payload: { options } }) => {
ipcRenderer.send('npm-view', options)
}),
ignoreElements()
);