为啥我的 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 操作
如何在 redux-observable 史诗中链接 RxJS 可观察?