React Router 4 如何在函数内以编程方式重定向? [复制]

Posted

技术标签:

【中文标题】React Router 4 如何在函数内以编程方式重定向? [复制]【英文标题】:React Router 4 How do I redirect programmatically inside a function? [duplicate] 【发布时间】:2018-12-10 17:08:20 【问题描述】:

我有一个 singinUser 函数,当用户单击提交按钮时会调用该函数。我希望用户在获取数据完成后重定向到另一个 url。在之前的 react 版本中,我曾经使用来自 'react-router'browserHistory。 react-router 4应该怎么做?

import axios from 'axios';
    const ROOT_URL = 'http://localhost:3090';

    export const signinUser = ( email, password ) => 
        return (dispatch) => 
            axios.post(`$ROOT_URL/signin`,  email, password )
                .then(response =>
                    //I want to redirect
                )
                .catch(err=>

                )
        
    

【问题讨论】:

【参考方案1】:

这是我个人在我的应用程序中为受保护路由执行重定向的方式:

const GuestRoute = ( component: Component, ...rest ) => (
  <WebServiceContextConsumer>
    
      context =>
        <Route
          ...rest
          render=props =>
            context.auth.getUser() 
              ? (<Redirect to=pathname: "/", state:  from: props.location  />) 
              : (<Component ...props />)
          
        />
    
  </WebServiceContextConsumer>
);

您需要将视图与逻辑分开。执行您的任何调用,然后使用 Promise 捕获响应并在您的 View 组件中以您想要的方式处理它。

【讨论】:

以上是关于React Router 4 如何在函数内以编程方式重定向? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 reactjs 和 redux 处理导航

在 react-router V4 中,如何以编程方式设置查询字符串参数?

在 React-Router v4 中以编程方式导航

在 React-Router V4 中以编程方式设置路由参数最终会出现“找不到页面”

无法使用 react-router 4 以编程方式重定向

如何在 react-router 中以编程方式进行服务器端路由?