javascript - React Redux with redux-observable 在异步操作完成后使用路由器导航到不同的页面

标签 javascript reactjs redux react-router rxjs

我正在使用 redux-observable这是我的登录史诗:

const login = ( action$ ) => {
    return action$.ofType(SessionActions.LOGIN_USER)
      .flatMap(( {payload} ) => {
        return sessionService.login(payload)
          .do(payload => {
            sessionService.setSession(payload));
          // Here I want to redirect the user back to his last location
          }).map(result => ({
            type: SessionActions.LOGIN_SUCCESS,
            payload: result
          }));
      });
  }

但是我如何在登录操作成功后将用户重定向到不同的页面。

redux 的方法是什么?

最佳答案

如果您使用 redux-observablereact-router-redux ,您可以在史诗中进行任何重定向:

import { ajax } from 'rxjs/observable/dom/ajax';
import { push } from 'react-router-redux';
import NProgress from 'nprogress';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/mergeMap';

export default function login(action$) {
  return action$.ofType('LOGIN_USER')
    .do(() => NProgress.start())
    .mergeMap(payload => (
       // Call your login service here, please note that it must be an observable to continue in your epic chain.
       Observable.fromPromise(sessionService.setSession(payload))
         // This is the redirect you're looking for, it's now became an action thanks to react-router-redux :)
         .mapTo(push({ url: '/' }))
         .do(() => NProgress.done())
  ));
}

我什至为奖励积分添加了一个进度指示器 :) 它是在 redux-observable's own navigation example 的帮助下构建的

关于javascript - React Redux with redux-observable 在异步操作完成后使用路由器导航到不同的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39954010/

相关文章:

javascript - 页面加载一段时间后执行 JS 函数

javascript - 当 CSS 属性溢出更改时,YouTube 视频在 firefox 上重新加载

reactjs - 如何使用 Lodash 和 Normalizr 处理我的 redux 存储?

javascript - Redux reducer promise 处理

javascript - react 原生 + react 原生路由器通量 : How to apply hideNavBar to only one <Scene/>?

javascript - Redux Thunk函数后的回调: Uncaught TypeError: Cannot read property 'then' of undefined

javascript - <select> 选项的排序在页面加载时生成的排序方式与客户端添加的选项不同吗?

javascript - 为什么在渲染时调用我的 onClick? - react .js

reactjs - react + asp.net core 独立项目托管(部署)建议

javascript - 如何获取 child Prop