Source.pipe不是redux-observable / rxjs / operators的函数

时间:2018-08-08 12:46:45

标签: react-native redux rxjs reactive-programming redux-observable

处理本机的redux可观察项目(*叹气...)。
在商店的配置上,我似乎有一个错误,但是在我的一生中,我不知道为什么。

在加载时获取以下屏幕。 enter image description here

以下是配置文件:(其他所有东西都是标准的)

import { createStore, applyMiddleware } from 'redux'
import thunk from 'redux-thunk'
import logger from 'redux-logger'
import { createEpicMiddleware, ofType, combineEpics } from 'redux-observable'
import { composeWithDevTools } from 'redux-devtools-extension'
import { combineReducers } from 'redux'

import { 
    registerEmailEpic,
} from './actions'

import {
    masterReducer
} from './reducers';

const rootReducers = combineReducers({ masterReducer });
const rootEpics = combineEpics(registerEmailEpic);

const epicMiddleware = createEpicMiddleware();

// App dev + prod middleware.
// The order matters.
let middleware = [
    thunk, 
    epicMiddleware,
    combineEpics,
    ofType
];

if (__DEV__) {
    const reduxImmutableStateInvariant = require('redux-immutable-state-invariant').default();
    middleware = [...middleware, reduxImmutableStateInvariant, logger];
} else {
    middleware = [...middleware];
}

export default function configureStore() {
    const configuredStore = createStore(
        rootReducers,
        composeWithDevTools(applyMiddleware(...middleware))
    );
    epicMiddleware.run(rootEpics);
    return configuredStore;
}

1 个答案:

答案 0 :(得分:0)

这里的商店没什么问题,只是我们不需要在这里键入类型。

对于其他对此感到困扰的人,如果您使用的是TypeScript,则需要这样导入运算符:

因此,在使用map或类似debounce之类的地方,您需要这样导入它们:import { mapTo, delay } from 'rxjs/operators';

然后您可以像这样使用它们:

export const registerEmailEpic = (action$: any, state$: any): any => {
    return action$.pipe(
        ofType('PING'),
        delay(1000), // Asynchronously wait 1000ms then continue
        mapTo({ type: 'PONG' })
      )
}