【问题标题】: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 请求放入我的状态。

请告知我哪里出错了

【问题讨论】:

    标签: javascript reactjs redux rxjs rxjs-observables


    【解决方案1】:

    好的,我想通了

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-09
      • 2019-05-14
      • 1970-01-01
      • 2021-11-13
      • 2019-01-23
      • 2017-04-22
      • 2020-12-30
      • 1970-01-01
      相关资源
      最近更新 更多