如何将动作的有效负载传递给 redux-observable 中的另一个 rxjs 运算符?
How to pass payload of an action to another rxjs operator in redux-observable?
我正在使用 redux-observable 和 rxjs 的 tap 运算符来初始化 ipcRenderer 事件。在此之前,我想发送另一个动作。问题是如何将 payload 正确传递给 tap operator? -
注意:我想将 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
我找到了适合我需要的解决方案。我创建了另一个捕获相同类型的史诗。在点击运算符之后使用 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()
);
我正在使用 redux-observable 和 rxjs 的 tap 运算符来初始化 ipcRenderer 事件。在此之前,我想发送另一个动作。问题是如何将 payload 正确传递给 tap operator? -
注意:我想将 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
我找到了适合我需要的解决方案。我创建了另一个捕获相同类型的史诗。在点击运算符之后使用 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()
);