sli*_*wp2 0 rxjs redux-observable
我redux-observable用来处理 redux 异步操作。
我需要通过 id 清除模块状态。
这是我的clearModuleByIdEpic:
const clearModuleByIdEpic = (action$: ActionsObservable<any>) => {
return action$.ofType(t.CLEAR_MODULE_BY_ID)
.map((action: IActionPayload<any>): string => action.payload.id)
.map(clearModuleById);
}
Run Code Online (Sandbox Code Playgroud)
这是我的组件方法:调用clearModuleById操作。
private onClear(id: string) {
this.props.clearModuleById(id);
}
Run Code Online (Sandbox Code Playgroud)
但是当我点击删除按钮时会触发onClear点击事件。
它触发一个无限循环的clearModuleById行动。
我犯错了吗?
看起来您正在从史诗中分派与您在该史诗中过滤的相同动作。这将始终*导致无限循环。您需要始终 A) 调度不同的动作,或 B) 在触发适当的副作用后不调度史诗中的任何其他内容。
看起来你的史诗实际上并没有做任何事情,只是同步重新调度相同的动作。redux-observable 中的 Epics 允许您为一个操作执行 1 个或多个(a)同步副作用。
一般来说,除非您使用某种形式的逃生舱口,否则您不应该从史诗中重新发送相同的动作。这实际上是一种递归形式,所有常见的递归问题都适用。无法跳出递归意味着无限循环。
*也有例外,但在 99.99% 的情况下都是如此。
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |