【发布时间】:2017-09-13 23:25:53
【问题描述】:
我是 redux-observables 的新手,我正在尝试结合史诗,但是它并没有像我认为的那样工作。下面的代码使“MENU_TOGGLE”正确切换,并在控制台注销按钮被按下之前延迟,但 LOGIN_REQUEST 不会映射到 LOGIN_SUCCESS。我有以下示例:
import { combineEpics } from 'redux-observable';
import 'rxjs';
const loginRequest = action$ =>
action$.ofType('LOGIN_REQUEST')
.delay(1000)
.mapTo({ type: 'LOGIN_SUCCESS' });
const menuToggle = action$ =>
action$.ofType('MENU_TOGGLE')
.delay(1000)
.subscribe(action => {
console.log('Button pressed!');
});
export const rootEpic = combineEpics(
loginRequest, menuToggle
);
以上只是一个示例,我在单独的文件中有实际代码,但即使这样似乎也不起作用。如果我将其更改为:
export const rootEpic = combineEpics(loginRequest);
然后它会正确触发。只要我向 combineEpics 添加额外的史诗,它就不会再触发史诗了。
我似乎无法弄清楚我可能在哪里犯了错误。非常感谢任何帮助!
【问题讨论】:
-
只结合
menuToggle是否有效? -
是的,menuToggle 无论如何都可以工作。当我添加一个应用 mapTo 的史诗时。如果我从 menuToggle 中取出订阅并添加了 mapTo 另一个操作,它会做同样的事情。如果我从 combineEpics 函数中删除一个史诗,两个史诗独立工作,但是当两者都存在时,带有 mapTo 的史诗拒绝工作。