在Redux可观察到的简单史诗工作

时间:2018-07-18 17:06:23

标签: redux react-redux rxjs redux-observable

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

  1. 达到断点后,出现错误消息:“无法读取未定义的未关闭属性”,此后,我没有达到epic中的断点,请参见{ 3}}
  2. 一旦我击中epic,我想dispatch myAction是动作创造者。不确定如何添加dispatch。最初,我没有添加任何东西,并且得到调度未定义的错误。然后我注意到我的IDE自动添加了import { dispatch } from 'rxjs/internal/observable/pairs';。不知道这是否是将dispatch添加到我的epic的方法。这也可能是错误的原因。

在执行特定操作时,我最初是在击中epic的事实,这告诉我它已成功添加到中间件管道中,但是显然有些不正确。

这是我的史诗般的样子:

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 个答案:

答案 0 :(得分:1)

史诗级人物不会dispatch个动作,而是emit个动作。 redux-observable负责调度您的史诗发出的动作。史诗的基本结构应类似于:

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