代码之家  ›  专栏  ›  技术社区  ›  Sam

在Redux Observable中进行简单的EPIC工作

  •  1
  • Sam  · 技术社区  · 6 年前

    尝试实现我的第一个简单 epic 使用 redux-observable 但遇到了两个问题:

    1. 在我达到断点后,我会得到一个错误,该错误为“无法读取未定义的属性'closed'”,并且在此之后,我不会在 史诗 --见下文 enter image description here
    2. 一旦我击中我的 史诗 ,我想 dispatch myAction 它是一个动作创建者。不确定如何添加 派遣 . 最初,我没有添加任何内容,得到了未定义调度错误。然后我注意到我的IDE自动添加了 import { dispatch } from 'rxjs/internal/observable/pairs'; . 不确定这是否是添加 派遣 对我 史诗 . 这也可能是导致错误的原因。

    事实上我刚开始打我的 史诗 当一个特定的操作被激发时,告诉我它已经成功地添加到中间件管道中,但显然有一些地方不正确。

    以下是我的史诗:

    import { Observable } from 'rxjs';
    import { ofType } from 'redux-observable';
    import { filter, map, mapTo } from 'rxjs/operators';
    import { dispatch } from 'rxjs/internal/observable/pairs'; // ??? Is this how I access dispatch?
    
    import * as types from '../../actions/action-types';
    import { myAction} from '../../actions/my-actions';
    
    export const mySimpleEpic = (action$, state$) => action$.pipe(
    
        ofType(types.SOMETHING_HAS_HAPPENED),
        map(() => {
            debugger
            dispatch(myAction("Hello World!"))
        })
    )
    

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sylvain    6 年前

    史诗不是 dispatch 行动,他们 emit 行动。它是 redux-observable 他将你的史诗中所表现出来的行为传达给你。基本的史诗结构应该是这样的:

    export const mySimpleEpic = action$ => 
        action$
        .ofType(types.SOMETHING_HAS_HAPPENED)
        .map(() => myAction("Hello World!"));