使用redux-devtools动作重放角度?

时间:2017-09-12 16:30:12

标签: angular redux redux-devtools

我有这种情况:

  • 我打开redux-devtools。
  • 点击页面上的链接。
  • 此链接将我引导至第二页,该页面启动redux效果,该效果将返回另一个操作,当“减少”时,该操作将使用页面所需的信息更改状态。

当我尝试回溯我的步骤并单击redux-devtools中的播放按钮时,我预计会发生这种情况:

  • 该应用导航到第一页。
  • 该应用导航至第二页并显示该州的信息。

实际发生的是:

  • 该应用导航到第一页。
  • 应用程序导航到第二页,然后效果触发,然后进入服务器并获取新数据并将其显示在页面上。

我的理解是,重放功能应该完全重放事件,就像在每次操作后使用状态一样,而不会触发任何影响。

我目前使用pure redux来实现Redux。 redux-observable for effects,当然还有角度4 +。

我在组件中调度启动OnInit效果的操作。 我想我错过了一些大事,我正在做一些愚蠢的事情。

我在这里错过了什么?

以下是我创建商店的方式:

public initStore(enhancers: any[] = []) {

    const rootEpic = (action$: any, store: any) => this.epics$.mergeMap(epic => epic(action$, store));

    const middleware = [
        createEpicMiddleware(rootEpic),
        freezeMiddleware,
    ];

    const enhancer = compose(
        applyMiddleware(...middleware),
        ...enhancers
    );

    this.store = createStore<any>(this.createReducer(), enhancer);

    return this.store;
}

这是AppModule ctor:

constructor(ngRedux: NgRedux<any>, reduxRouter: ReduxRouter, devTools: DevToolsExtension) {

    reduxRouter.init(state => state.router);

    const enhancers = devTools.isEnabled() ? [devTools.enhancer()] : [];

    ngRedux.provideStore(reduxState.initStore(enhancers));

    reduxState.addReducers({
        settings: settingsReducer,
        global: globalErrorReducer,
        session: userSessionReducer,
    });

    reduxState.addEpics({
        explicitRouterEpic,
        logEpic: (actions$: any, store: any) => actions$.do(console.log).filter((x: any) => false),
    });
}

0 个答案:

没有答案