【发布时间】:2019-06-03 12:14:20
【问题描述】:
我想使用 RxJS 中的 iif 实用程序有条件地调度一些操作。问题是即使测试函数返回 false,也会调用 iif 的第二个参数。这会引发错误,并且应用程序会立即崩溃。我对 RxJS 的力量很陌生,所以我可能不知道一些事情。如果这很重要,我正在使用 connected-react-router 包。
export const roomRouteEpic: Epic = (action$, state$) => action$.ofType(LOCATION_CHANGE).pipe( 采摘('有效载荷'), 合并地图(有效载荷 => iif( () => { console.log('未记录'); 返回 /^\/room\/\d+$/.test(payload.location.pathname); // 设置为“/登录” }, 合并( tap(v => console.log('NOT LOGGED TOO')), 的( // 立即评估以下状态值 state$.value.rooms.list[payload.location.pathname.split('/')[1]] ? actions.rooms.initRoomEnter() :actions.rooms.initRoomCreate(), ), of(actions.global.setIsLoading(true)), ), 空的(), ), ), );【问题讨论】:
-
iif的第二个参数应该在测试函数返回false时被调用。如果测试函数返回true,将调用第一个参数。请参阅文档here -
通过第一个参数我计算测试函数。第二个和第三个在测试后调用。
-
好的,感谢您的澄清。接下来,再次检查测试函数是否实际返回
true。如果它返回除此之外的任何内容,则iif会将其评估为false。我会尝试用() => true替换您当前拥有的东西,看看它是否确实是导致问题的iif,或者您的测试逻辑。
标签: rxjs redux-observable