为啥我的 redux-observable 史诗没有被触发?

Posted

技术标签:

【中文标题】为啥我的 redux-observable 史诗没有被触发?【英文标题】:Why is my redux-observable epic not being triggered?为什么我的 redux-observable 史诗没有被触发? 【发布时间】:2020-08-23 20:04:34 【问题描述】:

通过尝试做一个简单的 fetch 示例来尝试理解 redux 和 redux observables 中的 rxjs 和 rxjs

我的商店是这样设置的:

import  applyMiddleware, createStore  from 'redux'
import  reducers  from 'redux/reducers'
import  createEpicMiddleware  from 'redux-observable'
import rootEpic from '../epics'

const epicMiddleware = createEpicMiddleware()
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__

epicMiddleware.run(rootEpic)

export const store = createStore(reducers, composeEnhancers(applyMiddleware(epicMiddleware)))

在我的史诗中我有

const getUserDataEpic = (action$, state$) =>
    action$.pipe(
        ofType('GET_USER_DATA'),
        mergeMap(async (action) => 
            const url = `my-url-is-here`
            const data = await fetch(url).then((res) => res.json())
            return Object.assign(, action,  type: 'GET_DATA_SUCCESS', data )
        ),
        catchError((err) => Promise.resolve( type: 'FETCH_ERROR', message: err.message )),
    )

const epic2 = (action$, state$) => 

export default combineEpics(getUserDataEpic)

我也有我的动作创建者:

export const fetchData = () => ( type: 'GET_USER_DATA' )

这会在安装时在我的组件中触发。我已经包裹在 mapDispatchToProps 中,并且我已经验证它肯定会被调用。我的减速机也是如此

我不明白为什么我的史诗没有被触发?我希望它会看到GET_USER_DATA 被触发,然后触发它自己的操作,将已解决的 API 请求放入我的状态。

请告知我哪里出错了

【问题讨论】:

【参考方案1】:

好的,我想通了

export const store = createStore(reducers, composeEnhancers(applyMiddleware(epicMiddleware)))

epicMiddleware.run(rootEpic)

我不得不反过来称呼这些 ^ :facepalm:

【讨论】:

以上是关于为啥我的 redux-observable 史诗没有被触发?的主要内容,如果未能解决你的问题,请参考以下文章

Redux-Observable 测试只读史诗

从 redux-observable 的史诗有条件地调度额外的动作

redux-observable - 在单个史诗中调度多个 redux 操作

如何在 redux-observable 史诗中链接 RxJS 可观察?

React redux-observable:以史诗般的方式进行顺序 API 调用

React + Redux-Observable + Typescript - 编译,参数不可分配错误