Fil*_*ese 0 rxjs redux-observable
我疯了!作为React/Nextjs应用程序的副作用,我试图redux-observable用来获取基本的ajax请求:
import {combineEpics} from 'redux-observable'
import {mergeMap} from 'rxjs/operators'
import {ajax} from 'rxjs/ajax'
const fetchSearchEpic = action$ =>
action$
.ofType('FETCH_SEARCH')
.pipe(
mergeMap(action =>
ajax.getJSON(`http://localhost:3001/search/${action.payload.query}`)
.map(response => ({ type: FETCH_SEARCH_FULFILLED, response }))
)
)
export const rootEpic = combineEpics(
fetchSearchEpic
)
Run Code Online (Sandbox Code Playgroud)
但我不能为我的生活得到这个工作.请求没有被触发,我一直得到的错误是:
Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_2_rxjs_ajax__.a.getJSON(...).map is not a function
Run Code Online (Sandbox Code Playgroud)
现在我猜它可能与新的RxJS 6导入依赖关系的方式有关,不知何故我需要导入.map将它添加到Observable,但是如何?
我试过了:
import 'rxjs'
import 'rxjs/observable/map'
import {map} from 'rxjs/observable'
Run Code Online (Sandbox Code Playgroud)
没有预期的效果......
版本:
"react": "16.4.0",
"redux": "4.0.0",
"react-redux": "5.0.7",
"redux-observable": "1.0.0-beta.2",
"rxjs": "6.2.1"
Run Code Online (Sandbox Code Playgroud)
ᴘᴀɴ*_*ᴛɪs 11
map(以及其他Rx运算符)在ObservableRxJS 6之后的原型中不再存在,原因有几个.
现在,运算符使用pipe以下链接链接:
ajax.getJSON(`http://localhost:3001/search/${action.payload.query}`)
.pipe(map(response => ({ type: FETCH_SEARCH_FULFILLED, response })
Run Code Online (Sandbox Code Playgroud)
确保map像这样导入:
import { map } from 'rxjs/operators';
Run Code Online (Sandbox Code Playgroud)
请参阅管道操作员,其中概述了这些更改.
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |